Java 如何获取计算机的ID?
在vb.net或java中是否有代码可以获取计算机>>的ID?? 我想写一个程序,可以得到计算机的id,以便像微软一样获得软件许可证 提前谢谢Java 如何获取计算机的ID?,java,vb.net,Java,Vb.net,在vb.net或java中是否有代码可以获取计算机>>的ID?? 我想写一个程序,可以得到计算机的id,以便像微软一样获得软件许可证 提前谢谢 Makara首先,微软的授权不是这样的 他们有一把钥匙,钥匙是在他们这边产生的。当他们向你出售软件副本时,他们会给你一把钥匙。输入密钥后,软件会将一些加密的tcp数据包发送回MS,以确定密钥现在正在使用,并增加使用计数。然后,它会在系统上创建一个隐藏得很好的文件,其中包含该密钥的授权 所有这些都不涉及获取“计算机id” 现在,MS(至少在一种许可模式下)
Makara首先,微软的授权不是这样的 他们有一把钥匙,钥匙是在他们这边产生的。当他们向你出售软件副本时,他们会给你一把钥匙。输入密钥后,软件会将一些加密的tcp数据包发送回MS,以确定密钥现在正在使用,并增加使用计数。然后,它会在系统上创建一个隐藏得很好的文件,其中包含该密钥的授权 所有这些都不涉及获取“计算机id” 现在,MS(至少在一种许可模式下)确实拍摄了系统快照,其中包括处理器类型、硬盘驱动器和主板品牌/型号,以确定组件是否已发生足够的变化,从而触发是否需要重新验证计算机许可证的潜在检查 这让我们回到计算机系统中没有一个“ID”的想法。最后一次尝试是英特尔(我相信?)使用他们的PII处理器。然而,公众的强烈反对足以使他们停止在芯片上添加序列号 你能做的下一件事就是尝试读取MAC地址;但网卡经常更换,这就充满了陷阱
我强烈建议您研究执行授权密钥的其他机制,如果这是您真正想要的。您可以使用此功能,它将返回mac地址:
public String macname() throws IOException {
String mac = "null";
String[] getmac = new String[] { "cmd", "/c", "getmac /NH" };
Process pnew = Runtime.getRuntime().exec(getmac);
BufferedReader newin = new BufferedReader(new InputStreamReader(
pnew.getInputStream()));
String line1 = "";
String ab = "";
while ((line1 = newin.readLine()) != null) {
ab = ab + line1;
}
int in = ab.indexOf(' ');
mac = ab.substring(0, in);
return mac;
}
你所说的计算机ID是什么意思?可能是重复的我想他的意思是使用WMI读取主板序列号-请参阅上面链接的SO问题。我的意思是在一台计算机中应该有类似ID的标识。当然,计算机没有MAC ID。网卡可以,但计算机可以有多个网络接口卡。