Подсказка, что это такое в Windows

Обновлено: 05.07.2024

Глобальный уникальный идентификатор (GUID), используемый для идентификации интерфейсов COM и WinRT.

Реализации

Импл Guid [src]

pub const fn zeroed() -> Guid [src]

Создает Guid, представленный нулевым шаблоном байтов.

pub const fn from_values(
данные1: u32,
данные2: u16,
данные3: u16,
данные4: [u8; 8]
) -> Руководство [источник]

Создает Guid с заданными постоянными значениями.

Создает Guid для «универсального» типа WinRT.

pub fn from_progid(progid: &str) -> Результат [источник]

Ищет CLSID в реестре с помощью функции CLSIDFromProgID.

Реализации признаков

импл Abi для Guid [src]

введите Abi = Self

Аби-представление реализующего типа. Подробнее

fn abi(&self) -> Self::Abi [src]

Приводит объект Rust к его типу ABI без копирования объекта.

fn set_abi(&mut self) -> *mut Self::Abi [src]

Возвращает указатель для установки значения объекта через вызов ABI.

unsafe fn from_abi(abi: Self::Abi) -> Результат [src]

Приводит представление ABI к объекту Rust, становясь владельцем битов.

fn drop_param(_: &mut Param ) [источник]

Импл Clone для Guid [src]

fn clone(&self) -> Guid [src]

Возвращает копию значения. Подробнее

pub fn clone_from(&mut self, источник: &Self) 1.0.0 [src]

Выполняет копирование-назначение из источника . Подробнее

копировать для Guid [src]

внедрение отладки для Guid [src]

fn fmt(&self, f: &mut Formatter ) -> Результат [src]

Форматирует значение с помощью заданного средства форматирования. Подробнее

импл по умолчанию для Guid [src]

fn default() -> Guid [источник]

Возвращает «значение по умолчанию» для типа. Подробнее

Импл Eq для Guid [src]

Импл из для Guid [src]

fn from(value: &str) -> Guid [источник]

Выполняет преобразование.

импл PartialEq для Guid [источник]

fn eq(&self, other: &Guid) -> bool [src]

Этот метод проверяет равенство собственных и других значений и используется == . Подробнее

Биты Описание
32 Данные1
16 Данные2
16 Данные3
8 × 8 Данные4

Старший байт в каждом поле сохраняется последним; последние 8 байтов сохраняются последовательно.

От одного до трех старших битов второго байта в данных 4 определяют вариант типа GUID:

Старшие четыре бита Data3 определяют номер версии и, следовательно, используемый алгоритм. [1]

Кодировка текста

Идентификаторы чаще всего записываются в виде последовательности шестнадцатеричных цифр, например:

Эта текстовая запись содержит следующие поля, разделенные дефисами:

Шаблон Описание
0 Объектная модель компонента назад совместимость; это включает идентификаторы GUID для важных интерфейсов, таких как IUnknown и IDispatch.
111 Зарезервировано для будущего использования.

Для первых трех полей самая значащая цифра находится слева. Последние два поля обрабатываются как восемь отдельных байтов, в каждом из которых самая значащая цифра находится слева, и они следуют друг за другом слева направо. Обратите внимание, что порядок цифр в четвертом поле может быть неожиданным, поскольку он обрабатывается иначе, чем в структуре.

Часто для заключения вышеприведенного формата добавляются фигурные скобки, как таковые:

Если требуется напечатать меньше символов, идентификаторы GUID иногда кодируются в строку base64 длиной от 22 до 24 символов (в зависимости от заполнения). Например:

Алгоритм

MAC-адрес используется в качестве основы для последней группы цифр GUID, что означает, например, что документ можно отследить до компьютера, на котором он был создан. Эта дыра в конфиденциальности использовалась при поиске создателя червя Melissa]. Большинство других цифр основаны на времени при создании GUID.

V1 GUID, которые содержат MAC-адрес и время, могут быть идентифицированы цифрой "1" в первой позиции третьей группы цифр, например 11da-9156-00036a0f876a>. GUID, использующие более поздний алгоритм, который в основном представляет собой случайное число, имеют «4» в той же позиции, например 453e-af97-5c3b448652f0>. В частности, битовый шаблон data3 будет 0001xxxxxxxxxxxx в первом случае и 0100xxxxxxxxxxxx во втором.

В зависимости от контекста группы GUID могут использоваться для представления похожих, но не совсем идентичных вещей. Например, в реестре Windows в ключевой последовательности «Мой компьютер\HKEY_Classes_Root\CLSID» в объектной модели компонентов (COM) идентификаторы GUID используются для уникального различения различных интерфейсов программных компонентов. Это означает, что две (возможно, несовместимые) версии компонента могут иметь одинаковые имена, но при этом различаться своими идентификаторами GUID.

Использование идентификаторов GUID позволяет согласованно использовать определенные типы ориентации объектов. Например, при создании компонентов для Microsoft Windows с использованием COM все компоненты должны реализовывать интерфейс IUnknown, чтобы иметь возможность находить все другие интерфейсы и функции этого компонента, и они делают это путем создания GUID, который может быть вызван. предоставить точку входа. Интерфейс IUnknown определяется как GUID со значением , и вместо именованной точки входа с именем «IUnknown» используется предыдущий GUID, поэтому каждый компонент, предоставляющий точку входа IUnknown, дает один и тот же GUID, и каждая программа, которая ищет интерфейс IUnknown в компоненте, всегда использует этот GUID для поиска точки входа, зная, что приложение, использующее этот конкретный GUID, всегда должно последовательно реализовывать IUnknown одним и тем же способом и одним и тем же способом.

Идентификаторы GUID также вставляются в документы из программ Microsoft Office, поскольку они также считаются объектами. Даже аудио- и видеопотоки в формате Advanced Systems Format (ASF) идентифицируются по их идентификаторам GUID.

Идентификаторы GUID часто хранятся в файлах в виде текста, но иногда они хранятся в двоичном формате. Например, некоторые файлы, в том числе файлы Advanced Systems Format (ASF), представляют собой серию значений в порядке байтов с прямым порядком байтов — 32-разрядное целое число без знака, за которым следуют два 16-разрядных целых числа без знака, за которыми следуют восемь байтов без знака. На оборудовании IA-32, как и на большинстве настольных ПК, это означает, что порядок байтов в памяти и в файле одинаков. Обратите внимание, что это не соответствует формату отображения текста, потому что, если первое поле выглядит так, создает и записывает новые или сравнивает их с GUID, созданными локально, возможно, потребуется изменить порядок байтов первых трех значений, если это сохраняет поля структуры данных в исходном порядке байтов.

Подтипы

Существует несколько разновидностей идентификаторов GUID, используемых в COM:

  • IID – идентификатор интерфейса; (те, которые зарегистрированы в системе, хранятся в реестре Windows в ключе HKEY_CLASSES_ROOT\Interface)
    • REFIID – указатель на IID.

    Форматы синдикации XML

    Есть также элемент guid в некоторых версиях спецификации RSS и обязательный элемент id в См. также

    Я ищу уникальный идентификатор GUID, хранящийся в реестре Windows, который помог бы мне идентифицировать установку Windows или ПК.

    • Всегда существует
    • Быть уникальным для конкретной установки Windows, т. е. ни один другой компьютер не будет иметь такой же идентификатор.
    • Никогда не меняйте

    12 ответов 12

    Вы можете получить GUID из реестра Windows, например:

    Вы ожидаете, что это число изменится или останется прежним, если диск для этой установки будет перемещен в другую систему?

    Вы ожидаете, что этот номер изменится, если установка будет клонирована с помощью призрака или чего-то еще? Можете ли вы рассчитывать на то, что клонированные системы всегда будут подвергаться sysprep в соответствии с рекомендациями Microsoft? С SID все в порядке, если вы можете быть уверены, что ваши установки никогда не будут клонированы.

    В случае мультизагрузочной системы (т. е. в системе установлены Windows 7 и Windows XP) нужно ли идентифицировать две установки как уникальные, связанные и т. д.?

    Почему вам нужно, чтобы это было частью установки Windows, а не чем-то, представленным аппаратным обеспечением, например, серийным номером процессора?

    Я предполагаю, что вы спрашиваете об этом для какого-то скрипта или инструмента, который вы используете для целей инвентаризации?

    Почему бы вам просто не создать свой собственный номер при первом запуске инструмента и не сохранить его в кусте реестра LOCAL_MACHINE? Возможно, даже использовать номер RFC4122 Type 1, который должен включать аппаратный адрес для одного из сетевых интерфейсов. Таким образом, вы можете проверить, принадлежит ли UUID этой системе, сравнив UUID с текущими сетевыми адаптерами.

    Вы хотите использовать идентификатор продукта Windows. Это уникальный номер, сгенерированный (хешированный) частично из установленного ключа продукта и частично из конфигурации оборудования, включая серийный номер процессора и MAC-адрес из первой сетевой карты. Вы можете прочитать об этом в этой (несколько устаревшей, но все еще актуальной) статье TechNet. Идентификатор продукта можно найти на экране «Информация о системе» или программно несколькими способами.

    Информация о системе


    Реестр, в котором хранится лицензия пользователя Windows, расположен по адресу: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion, для его чтения не требуется никаких специальных приемов

    Изменяется при активации Windows. Я также подозреваю, что он меняется при основных обновлениях Windows или в некоторых других ситуациях.

    Предполагая, что это сервер Windows, в базе знаний есть статья о том, как получить его из Win2k: KB224544.

    Я не знаю, работает ли LDP.exe так же, но может.

    Спасибо за информацию, я ищу GUID, который будет существовать во всех версиях Windows, XP и выше

    Я не уверен, что значение GUID, подобное описанному вами, действительно существует. Обычно используется информация об идентификаторе процессора или материнской платы.


    Если вы хотите идентифицировать установку Windows, вам может не повезти. В корпоративных средах рабочие станции часто создают образы, а не устанавливают их. Каждый компьютер, собранный из этого образа, будет идентичным.

    Самое близкое к тому, что вы описали, это SID машины, однако это не работает по двум причинам:

    1. Компьютеры Windows XP с образами имеют одинаковый SID, если только вы не запустите для них NewSID, чего многие люди не делают.
    2. Все контроллеры домена в одном домене используют один и тот же SID компьютера.

    Для чего вам нужен этот идентификатор? Лучше всего сгенерировать собственное, если это возможно.

    Если после создания образа компьютеры являются системными подготовками, SID будет другим. Если это не так (что часто бывает не так), идентификаторы безопасности будут одинаковыми.

    Вы можете попробовать использовать MAC-адрес, который, по крайней мере, должен быть глобально уникальным и постоянным. Это также имело бы приятное преимущество, заключающееся в том, что вы могли бы без особых хлопот получить IP-адрес машины и имя хоста (и это также не будет ограничено Windows). Это не соответствует вашим требованиям по наличию в реестре, но вместо этого вы можете использовать WMI.


    Как насчет DriveId системного тома? Вы можете получить идентификатор из класса WMI Win32_Volume, выполнив поиск записей с SystemVolume True.

    (Конечно, это можно сделать удаленно.)

    Есть SID, используемый Центром обновления Windows, который вы можете использовать. Опять же, нет гарантии, что он каждый раз будет уникальным или что он не изменится.

    Я думаю, что наиболее подходящим для вас будет MAC-адрес, однако он может измениться при замене сетевого адаптера.

    Лучше всего будет записать свой собственный GUID в реестр и использовать его.

    Чтобы подтвердить SID машины на определенной машине, вы можете запустить SysInternals PSGETSID %COMPUTERNAME%$. (SID домена).

    EDIT: удалены ссылки на SID машины в реестре, которые могут быть не уникальными (или даже правильными).

    Да ладно, если вы собираетесь кого-то модифицировать, по крайней мере, оставьте комментарий и сообщите им, что не так.

    @Денис, верно. Поэтому, если он находится в домене: psgetsid.exe %computername%$ создаст уникальный идентификатор.

    @Greg: Что, если вы создадите свои рабочие станции из образов? Если вы не запустили newsid, все они будут использовать один и тот же SID компьютера.

    Почему бы просто не использовать имя компьютера? Он будет уникальным в пределах вашего домена, он есть во всех установках Windows и изменится только в том случае, если администратор домена изменит его, что никогда не потребуется, если только не будет внесено исправление.

    Мне тоже нужно найти способ глобальной уникальной идентификации установок Windows. Во-первых, чтобы правильно классифицировать и идентифицировать резервные копии и определить, какие из них восстанавливаются на каких машинах. Во-вторых, чтобы назвать пары синхронизации для синхронизации файлов и определить, какую пару синхронизации использовать в зависимости от машин, участвующих в синхронизации.

    После прочтения нескольких сообщений, в том числе на этом веб-сайте, я пришел к выводу, что не существует простого способа найти глобально уникальный идентификатор установки Windows. Это очень плохо. Как и аппаратное обеспечение, программное обеспечение также должно иметь собственный серийный номер. Ну что ж! Итак, вот мой обходной путь: вместо того, чтобы найти один-единственный глобальный уникальный идентификатор, я создал обобщенное выражение, вдохновленное тем, как Microsoft называет сетевые диски в Windows и как она называет общие папки в Virtual PC: «[WINDOWS ID ПРОДУКТА (как переменная)] Установлен на [СЕРИЙНЫЙ НОМЕР КОМПЬЮТЕРА (как переменная)]." Хотя производственный идентификационный номер Windows уникален только в той мере, в какой уникален соответствующий ключ продукта, он, тем не менее, может быть одинаковым для нескольких установок, особенно на серийно выпускаемых компьютерах с установленной на заводе Windows, но серийный номер уникален и отличается от одной машины к другой.Вышеупомянутая формула — это все, что мне нужно для моих целей; Мне не нужен SID (я предполагаю, что он означает идентификатор безопасности) или что-то еще более сложное, потому что комбинация обеих переменных ссылается именно на установку Windows, которую мне нужно идентифицировать, тогда как каждая отдельная переменная , сам по себе бесполезен для меня. В частности, и во-первых, идентификация продукта Windows идентична на компьютерах одного и того же производителя и в одной и той же линейке продуктов, и мне это не нужно, поскольку у меня есть несколько идентичных машин. Во-вторых, серийный номер недостаточно однозначно идентифицирует, так как у меня есть несколько установок Windows на одном компьютере, к которым серийный номер компьютера не относится. Поэтому я предлагаю свой метод.

    Кроме того, и прежде чем вы спросите об этом: я решил не основывать свой метод на имени компьютера. Информация предоставляется пользователями и, следовательно, должна быть инвентаризирована. Однако идентификатор продукта Windows и серийный номер компьютера уже идентифицированы, инвентаризированы и неизменно привязаны к двум конкретным продуктам, что устраняет необходимость их повторной инвентаризации. Я бы также не стал идентифицировать установку Windows с помощью уникального идентификатора жестких дисков, поскольку я могу и вполне склонен переключать их с одной машины на другую, особенно когда емкость дисков находится в состоянии постоянного изменения. Точно так же я бы гораздо реже использовал идентифицирующую номенклатуру центрального процессора или материнской платы, как это было предложено ранее в предыдущем ответе Shoeless. Наконец, я также отвергаю наиболее очевидный вариант идентификации установки Windows (хотя, насколько я вижу, никем еще не упоминался): использование ключа продукта. Хотя она уникальна, это всего лишь лицензия на установку определенной версии Windows; на самом деле он не подключен к конкретной установке Windows и не определяет ее как установленную на конкретном компьютере, даже если лицензия была предоставлена ​​на основании покупки данного компьютера.

    В Windows 10 есть много местоположений оболочки, к которым вы можете получить доступ через оболочку. из диалогового окна «Выполнить». Они также известны как «Папки оболочки». Папки оболочки — это объекты ActiveX, реализующие специальную виртуальную папку или виртуальный апплет. В некоторых случаях они предоставляют доступ к физическим папкам на жестком диске или даже к специальным функциям ОС, таким как "Свернуть все окна" или переключатель Alt+Tab.

    Вы можете использовать их в различных сценариях, но в общем случае вы можете использовать их для создания ярлыка для определенного апплета Панели управления или функции Windows. Например, следующая команда откроет папку «Сетевые подключения»:

    windows-10-network-locations-folder

    Итак, идентификаторы GUID — это реализация корпорацией Майкрософт универсального уникального идентификатора (UUID) распределенной вычислительной среды (DCE). Библиотеки времени выполнения RPC используют UUID для проверки совместимости между клиентами и серверами и для выбора из нескольких реализаций интерфейса. Функции управления доступом Windows используют идентификаторы GUID для определения типа объекта, который защищает ACE объекта в списке управления доступом (ACL).

    Если вам нужно сгенерировать новый GUID в Windows, вы можете использовать как минимум два метода.

    Чтобы сгенерировать GUID в Windows 10 с помощью PowerShell,

     Windows 10 Создать новый идентификатор

      1. Откройте PowerShell. Совет. Вы можете добавить контекстное меню "Открыть PowerShell от имени администратора".
      2. Введите или скопируйте и вставьте следующую команду: [guid]::NewGuid(). Это создаст новый идентификатор GUID в выходных данных.
      3. Кроме того, вы можете запустить команду '', чтобы получить новый идентификатор GUID в традиционном формате реестра.
      4. Если вы не можете использовать PowerShell на своем устройстве с Windows 10, вот альтернативное решение. Вы можете использовать бесплатный генератор GUID от Microsoft.

        Создайте новый GUID с помощью инструмента "Генератор GUID"

        1. Загрузите генератор GUID с этой страницы.
        2. Загрузите EXE-файл и запустите его. Это самораспаковывающийся сжатый EXE-файл. Извлеките его по любому пути, например в папку на рабочем столе, и нажмите "ОК", чтобы продолжить.
        3. Откройте папку, в которую вы его распаковали, и запустите GUIDGEN.exe .
        4. Выберите нужный формат, например "Формат реестра".
        5. Нажмите Копировать, чтобы скопировать GUID в буфер обмена.
        6. Winaero очень рассчитывает на вашу поддержку. Вы можете помочь сайту и дальше предлагать вам интересный и полезный контент и программное обеспечение, используя следующие варианты:

          Если вам понравилась эта статья, поделитесь ею с помощью кнопок ниже. Это не потребует от вас многого, но поможет нам расти. Спасибо за вашу поддержку!

          Автор: Сергей Ткаченко

          Сергей Ткаченко — разработчик программного обеспечения из России, который основал Winaero еще в 2011 году. В этом блоге Сергей пишет обо всем, что связано с Microsoft, Windows и популярным программным обеспечением. Следите за ним в Telegram, Twitter и YouTube. Просмотреть все сообщения Сергея Ткаченко

          Автор Сергей Ткаченко Опубликовано 10 апреля 2019 г. 10 апреля 2019 г. Рубрики Windows 10 Tags Windows 10 Generate GUID, Windows 10 GUID

          Одна мысль о «Создать GUID в Windows 10 (глобальный уникальный идентификатор)»

          Или из командной строки:
          powershell -command “[guid]::NewGuid()”

          Оставить ответ Отменить ответ

          Свяжитесь с нами

          Здесь вы можете подписаться на наши каналы. У нас есть Twitter, YouTube и Telegram, а также RSS-канал и информационный бюллетень по электронной почте.

          Мы прекратили работу Facebook, чтобы доставлять обновления наших сообщений.

          Избранные сообщения

          Реклама

          Недавно обновлено

          Дружественные блоги

          transparent

          Обзор конфиденциальности

          Читайте также:

Шестнадцатеричные цифры Описание
8 Данные1
4 Данные2
4 Данные3
4 Начальные два байта из Data4
12 Оставшиеся шесть байтов из Data4