1

可能重复:
生成唯一的机器 ID

我想要处理器序列号,它是唯一的 ID,没有其他处理器具有该 ID。我也有硬盘序列号。我正在使用 C++。有人可以帮我吗?

我需要使用 c++ 的唯一机器 ID,例如 CPU 编号、主板编号。

Win32_BaseBoard、Win32_Processor Win32_DiskPartition

谢谢你。

4

3 回答 3

4

根据 Wikipedia,从 Pentium III 开始支持 CPUID 汇编器操作码,但出于安全考虑,不再实施。有关详细信息,请参阅以下文章:http://en.wikipedia.org/wiki/CPUID#EAX.3D3: _Processor_Serial_Number

于 2012-08-09T04:33:40.170 回答
2

最好的方法是从不同的来源而不是依赖于单个参数导出机器唯一 ID。

查看http://sowkot.blogspot.com/2008/08/generating-unique-keyfinger-print-for.html了解更多信息。

即使上面链接中描述的方法也不能保证始终相同的 MID(用户可能会更改硬件)。

根据我的经验,在应用程序启动/启动时生成 MID 并存储在应用程序特定区域(可能在注册表中)并将其用于所有其他与应用程序相关的任务,而不是每次都生成。在这种情况下,正常的 GUID 生成就足够了。

于 2012-08-09T05:13:52.463 回答
1

如果您需要一个唯一的 ID,您不必将其与硬件绑定,只需生成一个新的随机ID(128 位或更大)!将其存储在您喜欢的任何持久存储机制中,以便下次提取之前生成的相同 ID。

如果您使用处理器或磁盘序列号,它们可能会发生变化,因为用户可以升级他们的硬件。您自己的唯一 ID 永远不会改变。唯一的缺点是具有双引导的机器将有两个或多个 ID——每个操作系统实例一个 ID。

于 2012-08-09T05:34:26.870 回答