2

How can I get my motherboard's ID, using Java, in Linux, Mac, and Solaris? I'd prefer a cross-platform solution.

I found a way that works in Windows:

String result = "";
    try {
    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;
    }
    input.close();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    return result.trim();

That works perfectly in Windows, but I need something that will also work in Mac, Linux and Solaris.

Michael Petrotta
  • 59,888
  • 27
  • 145
  • 179
Nathan F.
  • 3,250
  • 3
  • 35
  • 69
  • Also consider `ProcessBuilder`, illustrated [here](http://stackoverflow.com/a/5740673/230513) for `IOPlatformSerialNumber` on Mac OS X. – trashgod Nov 18 '12 at 00:24

0 Answers0