我使用以下代码获取主板序列号。但我得到了 o/p Result is empty。我在这段代码中犯了什么错误?
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();
}
最佳答案
我可以确认 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 上有更多提示和技巧,可能会给您一些不同的策略。
关于java - 获取不到主板序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5581551/