我知道 question 已经被问到有关为机器生成唯一 ID 的问题,但我的问题略有不同。
我想知道是否有任何其他方法(API 调用?)来获取硬件信息而不使用 WMI。我从MSDN 了解到WMI 是在Win2000 中引入的,所以它在Win98 中似乎不可用。我有一个应用程序,它甚至必须在 Win98 上运行(我知道它很糟糕,但你能做什么?)并且仍然掌握硬件信息。
最佳答案
我已经多次为许可项目这样做了。对于硬盘序列号,请使用:
private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);
使用函数返回的
VolumeSerialNumber
。此外,您可能已经考虑过使用 Windows 产品 ID(位于
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId
)。请注意,大量 Windows XP 用户拥有盗版副本并共享相同的产品 key 。关于windows - 如何在没有 WMI 的情况下获得唯一的机器签名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/872385/