0

现在我正在使用此代码来检索系统的 MAC 地址。

command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

当用户在环境变量中定义了一个值为“Systemroot/system32”的“路径”时,这可以正常工作,但不是没有这个。
所以我想做的是使用这个

command = "cmd.exe %systemroot%/system32/ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

但这根本不是在检索 MAC 地址。

谁能让我知道这里出了什么问题或如何检索 MAC 地址,其代码在 java 5 及更高版本中兼容?
有没有替代的解决方案?
getHardwareAddress() 在 java 5 中不起作用。我在很多帖子中都看到了这一点,这不适合我的应用程序。我的应用程序兼容所有 tomcat 和所有 java 版本。
请帮忙...

我参考并遵循了如何从 Java 设置环境变量?同样,但没有环境变量,MAC 地址不会从系统中读取。请问还有什么建议吗?

4

1 回答 1

0

您可以使用 获取环境变量的值System.getenv,因此您可以尝试类似的方法

File sysRoot = new File(System.getenv("systemroot"));
File ipconfig = new File(new File(sysRoot, "system32"), "ipconfig");
String[] command = new String[] { ipconfig.getAbsolutePath(), "/all" };
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
// read all output from br, then p.waitFor()
于 2012-11-20T15:05:58.203 回答