2012-11-20 2 views
0

지금이 코드를 사용하여 시스템의 MAC 주소를 검색하고 있습니다.MAC 주소는 java 5 및 java 6 이상입니다.

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 주소를 검색하는 방법을 알려주십시오.
대체 솔루션이 있습니까?
자바 5에서는 getHardwareAddress()가 작동하지 않습니다. 내 애플 리케이션에 맞지 않는 많은 게시물에서 이걸 보았습니다. 내 응용 프로그램은 모든 바람둥이 및 모든 자바 버전과 호환됩니다.
도와주세요 ...

또한 How do I set environment variables from Java?도 언급했지만이 환경 변수를 사용하지 않으면 MAC 주소가 시스템에서 읽히지 않습니다. 다른 제안 사항이 있으십니까?

+4

의 라인을 따라 뭔가를 시도 할 수 get-mac-address-in-java/ –

+1

Windows 경로는 백 슬래시를 사용합니다. –

+0

... 첫 번째 예제에서와 같이 "/ c"옵션을 사용하십시오. –

답변

0

당신은 System.getenv를 사용하여 환경 변수의 값을 얻을 수 있습니다, 그래서 당신이보고 http://www.mkyong.com/java/how-to-을

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()