【发布时间】:2013-08-03 08:43:51
【问题描述】:
我正在用 Java 编写游戏服务器,我需要一种方法来获取计算机的唯一标识符(多帐户保护),目标平台是 Windows >= XP。我用纯 Java 和 JNI 测试了很多方法:
- MAC 地址 - 非常容易更改,冲突几率高
- (JNI) 主板 SN - 并非总是如此,高碰撞几率
- (JNI) 磁盘驱动器 SN - 无法使用 WMI 按磁盘号检测磁盘驱动器,碰撞几率很小,在 Windows XP 上不起作用(没有序列号字段)
- 隐藏文件夹中的文件 - 重新安装 Windows 后不保存,如果我知道它可以修改或删除它。
- (JNI) Windows GUID - 高冲突几率,在 Windows 重新安装后不会保存。
还有其他方法吗?
【问题讨论】:
-
@IosifM。他可以用 c/c++ 编写本机代码。
-
顺便说一下,你应该避免在标题中加上“最佳方式”,因为这会导致它被投票为固执己见。
-
你把mac地址用2^48个组合称为高碰撞率,你认为你的游戏会有多少玩家?
-
能够设置它并不会使其碰撞几率很高。
-
如果您提供更多信息会更好。当您说“多帐户保护”时,您的意思是要限制玩家/计算机使用多个帐户登录吗?您能否还澄清一下,如果用户重新安装操作系统,它应该是“同一台计算机”吗?如果主板被移动了怎么办?如果这些问题的答案是否定的,那么您提到的两种或多种方法的组合如何?
标签: java c++ c windows java-native-interface