【发布时间】:2019-04-20 21:02:13
【问题描述】:
我想限制我使用 launch4j 进行的设置,使其仅安装在特定计算机上。具体来说,我想获取计算机的 MAC 地址并检查它是否是特定计算机,然后允许它安装设置(或运行 exe)。
我在网上搜索过,但没找到解决办法
语言:java
IDE:NetBeans
可执行文件使用:Launch4j
安装程序由 Inno Setup Compiler 制作
【问题讨论】:
我想限制我使用 launch4j 进行的设置,使其仅安装在特定计算机上。具体来说,我想获取计算机的 MAC 地址并检查它是否是特定计算机,然后允许它安装设置(或运行 exe)。
我在网上搜索过,但没找到解决办法
语言:java
IDE:NetBeans
可执行文件使用:Launch4j
安装程序由 Inno Setup Compiler 制作
【问题讨论】:
计算机可能没有网卡或有很多网卡,因此容易出现基于 MAC 地址的识别错误。
检索计算机上网络接口的 MAC 地址
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
System.out.println(networkInterface.getName() + " " +
networkInterface.getDisplayName());
}
可以通过散列 MAC 的串联字符串来缓解许多 MAC 地址的问题。但是仍然存在没有现有 MAC 地址的问题。
另一种唯一识别计算机的可能性是散列它的一些内部规范,例如处理器序列号、处理器标识符、操作系统等。例如通过使用跨平台OSHI库。此解决方案不依赖于机器上现有的网络适配器。
【讨论】: