6

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

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

还有什么办法吗?

4

2 回答 2

2

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

干杯:)

于 2013-08-04T14:16:09.173 回答
0

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

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

  • 用户 MAC 地址

  • 用户电子邮件地址

  • 用户硬盘序列号

  • 用户主板名称和编号

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

于 2013-08-04T14:33:02.567 回答