API на C# для получения идентификаторов ЦП и серийного номера диска/тома.

StackOverflow https://stackoverflow.com/questions/248305

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

  • Win32_Processor::ProcessorId
  • Win32_LogicalDisk::VolumeSerialNumber
Это было полезно?

Решение

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

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

Другие советы

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

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

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

Если вы хотите выполнить привязку к материнской плате, процессору и/или жесткому диску по причинам лицензирования, проверьте следующие значения:
HKLM\HARDWARE\DESCRIPTION\System\BIOS\BaseBoardManufacturer
HKLM\HARDWARE\DESCRIPTION\System\BIOS\BaseBoardProduct
HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0\Идентификатор
HKLM\HARDWARE\DESCRIPTION\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\DESCRIPTION\System\MultifunctionAdapter\0\DiskController\0\DiskPeripheral\0
(может быть характерно для плат с использованием RAID)

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

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

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

Гугл твой друг ;-)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top