API-интерфейсы в C # для захвата идентификаторов ЦП и серийных номеров дисков - PullRequest
4 голосов
/ 29 октября 2008

Мне известно, что я могу получить идентификатор процессора и серийный номер тома для физического диска, запросив WMI, но WMI обычно занимает приятное время. Какие другие более быстрые варианты, если таковые имеются, доступны для получения этой информации? Существуют ли Win32 API, которые бы справились с этой задачей?

Редактировать: Позвольте мне уточнить. По идентификатору процессора я ссылаюсь на то же значение, которое можно получить, запрашивая следующие свойства экземпляра WMI:

  • Win32_Processor :: ProcessorId
  • Win32_LogicalDisk :: VolumeSerialNumber

Ответы [ 5 ]

2 голосов
/ 17 февраля 2011

WMI фактически берет значительную часть своих данных из реестра. Система хранит много информации о системе, и, очевидно, она очень быстро реагирует.

Если вы хотите заблокировать материнскую плату, процессор и / или жесткий диск по причинам лицензирования, проверьте следующие значения:
HKLM \ ОБОРУДОВАНИЕ \ ОПИСАНИЕ \ Система \ BIOS \ BaseBoardManufacturer
HKLM \ ОБОРУДОВАНИЕ \ ОПИСАНИЕ \ Система \ BIOS \ BaseBoardProduct
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ Identifier
HKLM \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor \ 0 \ ProcessorNameString
HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId
HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ ProductId
HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx
HKLM \ HARDWARE \ DESCRIPTION \ System \ MultifunctionAdapter \ 0 \ DiskController \ 0 \ DiskPeripheral \ 0
(может быть характерно для плат с использованием RAID)

Если вы хотите получить последовательный диск без WMI, выполните вызов DeviceIoControl на устройство физического диска. Пример кода в VB.NET: http://www.dreamincode.net/code/snippet429.htm

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

Вы можете запросить информацию о диске в реестре Windows, но не знаете, что такое процессор. Похоже, что ваш вопрос рассматривается в этом SO q / a (демонстрирует несколько способов получить эту информацию, но для скорости, возможно, лучше всего получить ее из реестра):

Как составить список физических дисков?

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

Просто имейте в виду, что идентификатор процессора не всегда доступен.

Кстати, чего ты пытаешься достичь? Если вы хотите создать уникальный ключ для экземпляра компьютера, проверьте сообщение Создание уникального ключа (отпечаток пальца) для компьютера для целей лицензирования сообщение Sowkot Osman в Codeproject; он может дать вам несколько советов (также читать комментарии).

0 голосов
/ 12 мая 2009

Для CPUID попробуйте это: http://devpinoy.org/blogs/cvega/archive/2006/04/07/2658.aspx

Для серийного номера тома попробуйте следующее: http://www.eggheadcafe.com/articles/20021019.asp

Google твой друг; -)

0 голосов
/ 30 октября 2008

Мне нравится GetSystemInfo , но это не распространяется на физические диски ..

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