how to get motherboard Serial Number?

283 Views Asked by At

For getting the motherboard serial number, I used the following code. The output is empty, however. Is there anything I can do to fix it?

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

There are 1 best solutions below

0
On

I found that the following code works.

package ui;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class MB {
    public static void main(String[] args) throws IOException {
        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.StdOut.Writeline 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, result = new String();
        while ((line = input.readLine()) != null) {
            result += line;
        }
        if (result.equalsIgnoreCase(" ")) {
            System.out.println("Result is empty");
        } else {
            System.out.println("Result :>" + result);
        }
        input.close();
    }
}