C ++获取处理器ID

| 这个线程还可以。 如何获得处理器和主板ID? 我想使用不使用WMI或任何第三方lib的C ++代码获取处理器ID。 或计算机上任何独特的东西。 一件事是以太网ID,但在某些机器上又可以删除。我主要将其用于许可目的。 处理器ID是否唯一且可在所有主要处理器上使用?     
已邀请:
我最近有一个类似的问题,我做了以下工作。首先,我获得了一些独特的系统标识值: HDD序列号的GetVolumeInformation GetComputerName(当然这不是唯一的,但是我们的系统使用计算机名来识别LAN上的客户端,因此对我有好处) __cpuid(特别是PSN-处理器序列号字段) MAC地址的GetAdaptersInfo 我采用了这些值,并以任意但确定的方式将它们组合起来(请阅读下面的更新!)(添加,异或,除法和保留余数等)。遍历值,就好像它们是字符串一样并且富有创造力。最后,您将获得一个字节文字,您可以将其转换为字母和数字的ASCII范围,以获得唯一的,看起来像噪音的“可读”代码。 另一种方法可以是简单地将这些值连接起来,然后对它们进行异化处理(并可能再次转换为字母)以“将它们覆盖起来”。 我说这是唯一的,因为至少其中一个输入应该是唯一的(MAC地址)。当然,您需要对数论有一定的了解,才能消除这种独特性,但是无论如何它应该足够好。 重要更新:自从这篇文章以来,我学到了一些有关密码学的知识,并且我认为组成任意组合(本质上是您自己的哈希)几乎肯定是一个坏主意。实践中使用的哈希函数的构造应表现良好(如发生冲突的可能性较低),并且难以破解(此功能可构造一个与另一个哈希值相同的值)。构造这样的功能是计算机科学中一个非常棘手的问题,除非您有资格,否则不要尝试。正确的方法是将您可以收集的有关硬件的任何信息(即我在帖子中列出的信息)连接起来,并使用加密哈希或数字签名来获得可验证的安全输出。也不要自己实现密码算法;有很多漏洞陷阱需要很多知识来避免。使用众所周知且受信任的库来实现算法。     
如果您使用的是Visual Studio,则Microsoft在
<intrin.h>
标头中提供
__cpuid
instrinsic。链接的msdn站点上的示例。     
嗯... 有一些特殊的库可根据安装的硬件生成唯一的ID(因此,对于指定的计算机,此ID始终相同)。它们中的大多数采用主板ID + HDD ID + CPU ID并混合这些值。 谁重新发明轮子?为什么不使用这些库?有什么严重的理由吗?     

要回复问题请先登录注册