如何获取计算机的唯一标识符?

时间:2013-08-03 08:43:51

标签: java c++ c windows java-native-interface

我正在用Java编写游戏服务器,我需要一种方法来获取计算机的唯一标识符(Multiaccount保护),目标平台是Windows> = XP。我用纯Java和JNI测试了很多方法:

  • MAC地址 - 非常容易更改,碰撞机会很高
  • (JNI)主板SN - 并不总是,高碰撞机会
  • (JNI)Diskdrive SN - 无法通过带WMI的磁盘盘检测磁盘驱动器,碰撞几率很小,在Windows XP上不起作用(没有Seri​​alNumber字段)
  • 隐藏文件夹中的文件 - Windows重新安装后无法保存,如果我知道它可以修改或删除。
  • (JNI)Windows GUID - 在Windows重新安装后无法保存的高冲突几率。

还有别的吗?

2 个答案:

答案 0 :(得分:2)

我可以建议您使用CPUID,我已经将它用于我的软件许可

干杯:)

答案 1 :(得分:0)

实际上没有办法获取计算机的唯一标识符。许多程序员应用不同的逻辑和不同的东西,但任何逻辑或系统都不是完全证明。因此,您必须创建一个容易被其他程序员轻易破解的逻辑。当您尝试创建游戏服务器时,您必须尝试不同的逻辑和最好的东西,我发现:

  • 您可以拥有用户的IP地址

  • 用户MAC地址

  • 用户电子邮件地址

  • 用户硬盘序列号

  • 用户主板名称和号码

您必须创建您的组合以及一些哈希混合,因此密钥对于每台计算机都是唯一的