我想要一台装有Java的电脑的唯一id,在Windows,MacOS上,如果可能的话,还有Linux。可能是磁盘UUID,主板序列号...
可以使用Runtime.getRuntime().exec
(它不是小程序)。
想法?
发布于 2010-01-01 03:31:51
通常使用与网卡相关联的MAC地址。
在Java 6中,可以通过以下API获得该地址:
Java 6 Docs for Hardware Address
我还没有在Java中使用过它,但对于其他网络识别应用程序,它很有帮助。
发布于 2010-01-01 03:36:29
发布于 2010-01-01 22:11:22
仅在Windows上,您可以通过诸如JACOB之类的COM桥使用WMI获取主板ID。
示例:
import java.util.Enumeration;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.EnumVariant;
import com.jacob.com.Variant;
public class Test {
public static void main(String[] args) {
ComThread.InitMTA();
try {
ActiveXComponent wmi = new ActiveXComponent("winmgmts:\\\\.");
Variant instances = wmi.invoke("InstancesOf", "Win32_BaseBoard");
Enumeration<Variant> en = new EnumVariant(instances.getDispatch());
while (en.hasMoreElements())
{
ActiveXComponent bb = new ActiveXComponent(en.nextElement().getDispatch());
System.out.println(bb.getPropertyAsString("SerialNumber"));
break;
}
} finally {
ComThread.Release();
}
}
}
如果您选择使用MAC地址来标识计算机,则可以使用WMI来确定接口是否通过USB连接(如果您希望排除USB适配器)。
也可以通过WMI获取硬盘ID,但这是不可靠的。
https://stackoverflow.com/questions/1986732
复制相似问题