2011-04-07 13 views
1

마더 보드 일련 번호를 가져 오는 데 다음 코드를 사용했습니다. 하지만 o/p가 있습니다 결과가 비어 있습니다. 이 코드에서 어떤 실수를 했습니까?마더 보드 일련 번호를 가져올 수 없습니다.

 File file = File.createTempFile("realhowto",".vbs"); 
     file.deleteOnExit(); 
     FileWriter fw = new java.io.FileWriter(file); 

     String vbs = 
     "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n" 
     + "Set colItems = objWMIService.ExecQuery _ \n" 
     + " (\"Select * from Win32_BaseBoard\") \n" 
     + "For Each objItem in colItems \n" 
     + " Wscript.Echo objItem.SerialNumber \n" 
     + " exit for ' do the first cpu only! \n" 
     + "Next \n"; 

     fw.write(vbs); 
     fw.close(); 
     Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); 
     BufferedReader input = 
     new BufferedReader 
      (new InputStreamReader(p.getInputStream())); 
     String line; 
     while ((line = input.readLine()) != null) { 
     result += line; 
     } 
     if(result.equalEgnoreCase(" ") { 
      System.out.println("Result is empty"); 
     } else { 
     System.out.println("Result :>"+result); 
     } 
     input.close(); 
    } 
+1

Java에서 VBScript를 실행하는 것을 의미하지는 않습니다. COM4J를 아십니까? 나는 WMI를 사용할 수 있다고 확신한다. – zneak

+0

@zneak : 전에 사용하지 않았습니다. com4j.jar 파일을 얻을 수있는 곳은 어디입니까? com4j가 java.net [site.] (http://com4j.java.net/servlets/ProjectDocumentList)에 누락 되었기 때문에 – bharath

+0

그건 당황 스럽네. 마지막으로 다운로드 링크가 작동하는지 확인했습니다. 미안, 너를 도울 수 없어. – zneak

답변

1

본인의 컴퓨터에서 VBS 쪽이 잘 작동하는지 확인할 수 있습니다. 그러나 내가 얻은 결과는 다음과 같습니다.

MB-1234567890 

특별히 독특하거나 도움이되지 않는 것 같습니다. 그래도이게 네가하는 일이라면 다음을 시도해 보라. .vbs 인 파일로 VBS를 붙여 cscript <myfile>.vbs를 사용하여 실행

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
Set colItems = objWMIService.ExecQuery _ 
    ("Select * from Win32_BaseBoard") 
For Each objItem in colItems 
    Wscript.Echo objItem.SerialNumber 
    exit for ' do the first cpu only! 
Next 

을 그 작동하는 경우, 그것은 잘못입니다 자바 (그리고 나는 그것이 어떤 이유로 프로세스 출력을 캡처하지 용의자). 그렇지 않으면 VBS 스크립트가 실패합니다.

this thread에 대한 몇 가지 힌트와 팁으로 몇 가지 다른 전략을 제시 할 수 있습니다.

1
Process p = Runtime.getRuntime().exec("wmic baseboard get serialnumber"); 

또는

Process p = Runtime.getRuntime().exec("wmic /node:"HOST" bios get serialnumber"); 

대신

HOST는 cmd를 프롬프트에서 호스트 이름 입력에 도착 할 수 있습니다 통해 UR 호스트 이름를 제공합니다.

+0

그는 출력이 비어 있음을 알고 있습니다. 그는 해결책을 찾고 있습니다. – Lunivore

+0

@bhakki : 시도해보고 알려주세요. –

+0

나는 사용했지만 결과를 얻지 못했습니다. 다른 방법이 있습니까? – bharath

관련 문제