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



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

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

还有别的办法吗?

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

干杯:)

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

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

  • 用户MAC地址

  • 用户电子邮件地址

  • 用户HDD序列号

  • 用户主板名称和编号

你必须创建你的组合和一些散列来混合,这样密钥对于每台计算机都是唯一的

最新更新