Назад | Перейти на главную страницу

Ищете уникальный GUID для идентификации установки Windows

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

GUID должен;

Большое спасибо

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

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);

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

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

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

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

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

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

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

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

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

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

Вот ссылка на сообщение на форуме, которое содержит соответствующий код сценария WMI: http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic59274.aspx

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

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

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

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

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

Примеры сценариев здесь: http://www.winforums.com/showthread.php?t=8842

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

В PowerShell:

gwmi win32_volume -filter 'SystemVolume=true' | ft -a DriveLetter,SystemVolume,DeviceId

(Это, конечно, может быть удалено.)

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

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

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

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

http://blogs.msdn.com/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx

РЕДАКТИРОВАТЬ: удалены ссылки на SID машины в реестре, которые могут быть не уникальными (или даже правильными).

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

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

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

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