机器唯一ID

时间:2012-08-09 04:25:53

标签: c++

  

可能重复:
  Generating a unique machine id

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

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

Win32_BaseBoard, Win32_Processor Win32_DiskPartition

谢谢。

3 个答案:

答案 0 :(得分:4)

根据维基百科,从Pentium III开始,支持CPUID汇编程序操作码,但由于安全问题不再实施。有关详细信息,请参阅以下文章:http://en.wikipedia.org/wiki/CPUID#EAX.3D3:_Processor_Serial_Number

答案 1 :(得分:2)

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

检查http://sowkot.blogspot.com/2008/08/generating-unique-keyfinger-print-for.html以获取更多信息。

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

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

答案 2 :(得分:2)

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

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