2008-10-29 2 views
4

Я знаю, что могу получить идентификатор CPU и серийный номер тома для физического диска, запросив WMI, но WMI обычно занимает свое сладкое время. Какие еще более быстрые варианты, если таковые имеются, доступны для извлечения этой информации? Существуют ли API Win32, которые бы это сделали?API-интерфейсы в C# для захвата идентификаторов ЦП и серийного номера диска/тома

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

  • Win32_Processor :: ProcessorId
  • Win32_LogicalDisk :: VolumeSerialNumber

ответ

2

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

К слову, что вы пытаетесь достичь? Если вы хотите создать уникальный ключ для экземпляра компьютера, проверьте сообщение Generating Unique Key (Finger Print) for a Computer for Licensing Purposes от Sowkot Osman в Codeproject; он может дать вам несколько советов (также читать комментарии).

-2

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

+0

GetSystemInfo не получает идентификатор ЦП, упомянутый Брайаном Клайн – faulty

2

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

How to list physical disks?

2

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

Если вы хотите, чтобы заблокировать к материнской плате, CPU и/или HDD по причинам лицензирования, проверьте следующие значения:
HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardManufacturer
HKLM \ HARDWARE \ DESCRIPTION \ System \ BIOS \ BaseBoardProduct
HKLM \ HARDWARE \ Описание \ System \ CentralProcessor \ 0 \ Identifier
HKLM \ HARDWARE \ Описание \ System \ CentralProcessor \ 0 \ ProcessorNameString
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductId HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx
HKLM \ HARDWARE \ Описание \ System \ MultifunctionAdapter \ 0 \ DiskController \ 0 \ DiskPeripheral \ 0
(может быть специфическими для плат с RAID в использовании)

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