基于软件/硬件唯一识别PC

Mr.*_*Boy 10 c++ security winapi hardware-id

对于生成每个PC许可证密钥的要求,我需要一些代码,这些代码将在任何PC上返回稳定且(近)唯一密钥.它不具有来保证独特,但接近.它确实需要相当稳定,因此除非硬件发生实质性改变,否则给定的PC总是会产生相同的结果.

这适用于Windows应用程序,使用wxWidgets但Win32或其他选项都可以.

我在考虑MAC地址,但是在节能模式下可以经常禁用网卡的笔记本电脑呢?我遇到了GetCurrentHwProfile,但它看起来不像我想要的那样?

ten*_*our 6

不久前我有一个想法是使用CryptProtectData作为识别机器的方法。在该 API 的幕后,Microsoft 已经完成了您的要求。我从来没有测试过它,我很好奇它是否真的可行。

基本上你会用CryptProtectDatawith编码一个常量魔术值,CRYPTPROTECT_LOCAL_MACHINE结果是你的机器 ID。

  • 我已经对此进行了测试,但它似乎不起作用。重复加密相同的字符串每次都会产生不同的结果。提供恒定的“pOptionalEntropy”无济于事。 (2认同)

Bil*_*eal 2

我会直接使用 MAC 地址方法;当无线/局域网卡关闭时,它们仍然显示在网络连接中。因此您应该仍然能够获得 MAC。

考虑一下:只要您能够联系您的网络服务器或用于对这些 ID 进行编目的任何内容,用户就必须拥有某种形式的可用网卡。

哦,您也许可以使用客户计算机支持的 ​​CPU 序列号。

  • 两者都可以被欺骗。如果客户端通过路由器到达服务器(很可能是这种情况),您将无法获取客户端使用的 MAC 地址。 (2认同)
  • @Billy:不确定我理解这个问题。由于我们没有支持网络的应用程序,因此在安装时它会输出一个特定于机器的代码,供他们通过电子邮件发送给支持人员。然后,支持人员使用此代码生成一个许可证文件,该文件被发送回用户,用户只需将其放入正确的文件夹中即可。当应用程序启动时,它会以某种方式检查许可证是否针对机器特定的密钥有效 (2认同)