2

我必须使用验证密钥来保护用 Java 编写的应用程序,该密钥应仅在指定的 PC 上工作,因此例如机器 ID 序列号应由应用程序基于唯一标识符生成(例如:硬盘序列号,主板串口等...); 然后基于这个唯一标识符,另一个程序将生成一个验证密钥。

我已经在生成机器标识符的 .NET 应用程序上实现了类似的激活系统,从 WMI 获取硬件序列号,如何在 Java 中获取这些值?该解决方案应在 Windows、Linux 和 Mac Os X 上独立运行。

如何在 Java 中检索机器的唯一标识符?那里有一些图书馆,允许这样做吗?

4

3 回答 3

3

机器 MAC 地址(或其中一台机器 MAC 地址)是一个很好的候选者。它是唯一的,并且可能比其他硬件标识符更不经常更改。这是一个代码片段:

于 2012-03-05T10:49:50.940 回答
1

我认为您无法在纯 Java 中获得 CPU Id 或硬盘/主板 Id。您拥有的最接近的是网络 MAC 地址

NetworkInterface.getNetworkInterfaces().nextElement().getHardwareAddress();
于 2012-03-05T10:48:38.850 回答
0

您需要调用特定于平台的东西。例如,在 Windows 上,您可以调用调用 WMI 的 VB 脚本来获取此信息。

注意:如果您知道自己在做什么,那么您使用的任何方法都应该很容易被愚弄。

于 2012-03-05T10:48:07.857 回答