我正在制作一个程序,该程序需要运行该程序的计算机的唯一序列 ID。它需要永不改变(或者很少改变并且用户必须提前知道它什么时候会改变)。此外,我需要它在 Linux、Mac 和 Windows(甚至可能是 Solaris)上工作,或者以一种方式工作。 我试过这个...
try
{
Process process = Runtime.getRuntime().exec(new String[]
{
"wmic", "bios", "get", "serialnumber"
});
process.getOutputStream().close();
Scanner sc = new Scanner(process.getInputStream());
String property = sc.next();
String serial = sc.next();
System.out.println(property + ": " + serial);
} catch(IOException e)
{
e.printStackTrace();
}
但 WMIC 仅在 Windows 上。但除此之外,它是完美的。 只要有一种在 Mac 和 Linux 上执行此操作的方法就完美了
最佳答案
没有电脑序列号,即使有,也可以修改客户端软件发送任意号码。您可以通过某种方式合并网卡的媒体访问控制地址(MAC 地址),但可以通过软件更改该地址,或者可以更换网卡,或者可以有多个网卡。
关于投票应用程序,您唯一可以做的就是使用安全硬件,该硬件包含一个无法复制的唯一编号并进行加密。这就是智能卡的作用。
关于Java:如何获得永不更改的计算机的唯一序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29222406/