Не могу получить серийный номер материнской платы - PullRequest
1 голос
/ 07 апреля 2011

Я использовал следующий код для получения серийного номера материнской платы. Но я получил 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();
    }

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Я могу подтвердить, что сторона 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, который не работает.

Есть еще несколько советов и подсказок по этой теме , которые могут дать вам несколько различных стратегий.

1 голос
/ 07 апреля 2011
    Process p = Runtime.getRuntime().exec("wmic baseboard get serialnumber"); 

или

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

вместо HOST , введите ваш адрес hostname , который можно получить, набрав hostname inприглашение cmd.

...