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アドレスをまったく取得していません。

ここで何が問題なのか、またはJava 5以降と互換性のあるコードであるMACアドレスを取得する方法を教えてください。
代替ソリューションはありますか?
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 に答える