C#中用于获取CPU ID和驱动器/卷序列的API

问题描述:

我知道我可以通过查询WMI来获取物理驱动器的CPU标识符和卷序列号,但WMI通常会花费其甜蜜时间。还有哪些更快的选项可用于检索此信息?是否有Win32 API可以实现这个目标?C#中用于获取CPU ID和驱动器/卷序列的API

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

  • Win32_Processor :: ProcessorId
  • 的Win32_LogicalDisk :: VolumeSerialNumber

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

顺便说一句,你想完成什么?如果您想为计算机实例生成唯一密钥,请在Codeproject的Sowkot Osman上查看Generating Unique Key (Finger Print) for a Computer for Licensing Purposes的帖子;它可以给你一些提示(也可以阅读评论)。

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

+0

GetSystemInfo没有获得由Brian Cline提到的CPU ID – faulty 2008-10-30 06:09:15

对于CPUID,试试这个:http://devpinoy.org/blogs/cvega/archive/2006/04/07/2658.aspx

对于音量小号erial号码,试试这个:http://www.eggheadcafe.com/articles/20021019.asp

谷歌是你的朋友;-)

您可以查询Windows注册表中的驱动器信息,但不确定CPU。看来你的问题是在这个SO q寻址/ A(描述了许多方法来得到这个信息,但对速度,也许得到它从注册表是您最好的选择):

How to list physical disks?

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

如果你正在寻找锁定到主板,CPU和/或HDD许可证的原因,请查看以下值:
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 \微软\的Windows NT \ CURRENTVERSION \ DigitalProductId
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProductId
HKLM \ SOFTWARE \微软\的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