java - 获取不到主板序列号

标签 java windows vbscript

我使用以下代码获取主板序列号。但我得到了 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/

相关文章:

java - Android grpc 失败异常

vbscript - 使用 VBScript 检查网络连接

windows - 如何使用 VBScript 指定远程桌面连接的地址?

javascript - 将旧的 VBScript 转换为 JavaScript

java - 在主 Activity 中按后退按钮时如何使应用程序退出?

java - 使用 Apache POI 从 Excel 文件读取单元格值

java - Spring 的 @Cacheable 放在返回列表的方法上时会做什么?

c# - Visual Studio Community 2017 是否需要使用 Microsoft 帐户登录?

javascript - 使用 node.js 的 Windows 命令行解释器

c++ - 如何找出我的代码的哪一部分正在减慢我的 C++ 程序