我正在用Java编写一个游戏服务器,我需要一种方法来获得计算机的唯一标识符(多帐户保护),目标平台是Windows>=XP。我用纯Java和JNI:测试了很多方法
- MAC地址-非常容易更改,碰撞几率高
- (JNI)主板SN-不总是,碰撞几率高
- (JNI)Diskdrive SN-无法通过WMI的磁盘号检测磁盘驱动器,碰撞几率很小,在Windows XP上不起作用(没有序列号字段)
- 隐藏文件夹中的文件-重新安装Windows后不会保存,如果我知道它在哪里,可以修改或删除
- (JNI)Windows GUID-冲突几率高,在Windows重新安装后不会保存
还有别的办法吗?
我可以建议您使用CPUID我已经将其用于我的软件许可
干杯:)
实际上没有任何方法可以获得计算机的唯一标识符。许多程序员应用不同的逻辑和不同的东西,但任何逻辑或系统都不是完全证明。因此,您必须创建一个不易被其他程序员轻易破坏的逻辑。当你试图创建游戏服务器,因此你必须尝试不同的逻辑,我发现最好的独特之处是:
-
您可以拥有用户的IP地址
-
用户MAC地址
-
用户电子邮件地址
-
用户HDD序列号
-
用户主板名称和编号
你必须创建你的组合和一些散列来混合,这样密钥对于每台计算机都是唯一的