我知道 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/