Как получить уникальную подпись машины без WMI? - PullRequest
3 голосов
/ 16 мая 2009

Я знаю, что вопрос уже задавался о создании уникального идентификатора для машины, но мой вопрос немного отличается.

Я хочу знать, существуют ли какие-либо другие методы (вызовы API?), Чтобы получить информацию об оборудовании и НЕ использовать WMI. Из MSDN я понимаю, что WMI введен в Win2000, поэтому он не доступен в Win98. У меня есть приложение, которое должно работать даже на Win98 (я знаю, что это отстой, но что вы можете сделать?) И все еще получать информацию об оборудовании.

Ответы [ 3 ]

3 голосов
/ 16 мая 2009

Я делал это несколько раз для лицензирования проектов. Для серийного номера жесткого диска используйте:

private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);

Используйте VolumeSerialNumber, который возвращается функцией.

Кроме того, вы могли подумать об использовании идентификатора продукта Windows (расположен по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId). Будьте осторожны, большое количество пользователей Windows XP имеют пиратские копии и используют одни и те же ключи продукта.

2 голосов
/ 16 мая 2009

Вы можете комбинировать различную информацию об оборудовании для создания уникального ключа.

Например, идентификатор процессора, MAC-адрес и т. Д. Вы извлекаете их, объединяете их, шифруете, и у вас есть уникальное представление о настройке аппаратного обеспечения этого аппарата.

Попробуйте поискать по теме: как читать информацию об оборудовании.

Из того, что я вижу, есть очень полезный пост в CodeProject: Как получить информацию об оборудовании (идентификатор процессора, информация о основной плате, последовательный жесткий диск, информация о системе, ...) .

1 голос
/ 16 мая 2009

Просмотрите библиотеку ядра32 и пользователя32 WinAPI. В нем есть все виды лакомств, таких как EnumDisplayDevices, GetLogicalDrives, GlobalMemoryStatus, GetVolumeInformation и т. Д., И т. Д. Мне нравится использовать PInvoke для просмотра API, поскольку он дает мне код оболочки C # - но MSDN будет иметь все это в Windows SDK.

@ Ответ novatrust относительно серийных жестких дисков хороший, но его можно сочетать с большим количеством. Я предоставил ссылку API GetVolumeInformation на pinvoke выше, но простой Google должен также работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...