4

我知道我可以通过查询 WMI 来获取物理驱动器的 CPU 标识符和卷序列号,但 WMI 通常会花很多时间。如果有的话,还有哪些更快的选项可用于检索此信息?是否有 Win32 API 可以做到这一点?

编辑:请允许我澄清一下。通过 CPU 标识符,我指的是通过查询以下 WMI 实例属性获得的相同值:

  • Win32_Processor::ProcessorId
  • Win32_LogicalDisk::VolumeSerialNumber
4

4 回答 4

2

请记住,CPU 的 ID 并不总是可用的。

顺便说一句,你想完成什么?如果要为计算机实例生成唯一密钥,请查看Codeproject 的 Sowkot Osman为计算机生成用于许可目的的唯一密钥(指纹) ;它可以给你一些提示(也可以阅读评论)。

于 2009-05-11T23:44:41.367 回答
2

您可以查询 Windows 注册表以获取驱动器信息,但不确定 CPU。似乎您的问题已在此 SO q/a 中得到解决(演示了多种获取此信息的方法,但为了速度,也许从注册表中获取它是您最好的选择):

如何列出物理磁盘?

于 2009-05-12T19:18:46.130 回答
2

WMI 实际上从注册表中获取了很大一部分数据。该系统在其中存储了大量有关该系统的信息,并且响应速度显然非常快。

如果您出于许可原因希望锁定到主板、CPU 和/或 HDD,请查看以下值:
HKLM\HARDWARE\DESCRIPTION\System\BIOS\BaseBoardManufacturer
HKLM\HARDWARE\DESCRIPTION\System\BIOS\BaseBoardProduct
HKLM\ HARDWARE\DESCRIPTION\System\CentralProcessor\0\Identifier
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

于 2011-02-16T21:48:53.017 回答
-2

我喜欢GetSystemInfo但这不包括物理驱动器..

于 2008-10-29T21:16:45.597 回答