2011-04-07 25 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 

をそれが動作する場合、それは障害でのJavaだ(と私はそれが何らかの理由でプロセスの出力をキャプチャしていない疑いがあります)。それ以外の場合は、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プロンプトでホストを入力に到着することができるウルホストを与えます。

+0

彼は出力が空であることを知っています。彼は解決策を探している。 – Lunivore

+0

@bhakki:これを試してみてください、 –

+0

私は使用しましたが、私は結果を得ていませんでした。別の方法がありますか? – bharath

関連する問題