通过java 5和java 6的MAC地址&;在上面

通过java 5和java 6的MAC地址&;在上面,java,Java,现在我正在使用此代码检索系统的MAC地址 command = "cmd.exe /c ipconfig /all"; Process p = Runtime.getRuntime().exec(command); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); 当用户在环境变量中定义了一个值为“Systemroot/system32”的“Path”,但没有这个值时,这种方法可以

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

command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
当用户在环境变量中定义了一个值为“Systemroot/system32”的“Path”,但没有这个值时,这种方法可以正常工作。
所以我要做的就是用这个

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版本兼容。
请帮忙

我也参考并遵循了这一点,但没有环境变量,MAC地址无法从系统中读取。
还有其他建议吗?

您可以使用
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()

看一看Windows路径使用反斜杠,您尝试过这些吗?。。。使用与第一个示例中相同的“/c”选项。可能重复:@brunoveira no不完全相同。我想治疗Java5、6和7。