Java Get computer hardware parameters

Source: Internet
Author: User

public class Hardwareutils {

/** * * Get the motherboard serial number * * * * @return */

public static String Getmotherboardsn () {

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" does 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 ();

}

/** * * GET HDD Serial number * * * * @param drive * * Disc * * @return */

public static string GETHARDDISKSN (String drive) {

String result = "";

try {

File File = File.createtempfile ("Realhowto", ". vbs");

File.deleteonexit ();

FileWriter FW = new Java.io.FileWriter (file);

String vbs = "Set objFSO = CreateObject (\" Scripting.filesystemobject\ ") \ n"

+ "Set coldrives = objfso.drives\n"

+ "Set objdrive = colDrives.Item (\" "

+ Drive

+ "\") \ n "

+ "WScript.Echo Objdrive.serialnumber"; See note

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 ();

}

/** * * Get CPU Serial Number * * * * @return */

public static String getcpuserial () {

String result = "";

try {

File File = File.createtempfile ("tmp", ". 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_processor\ ") \ n"

+ "For each objitem in colitems \ n"

+ "WScript.Echo Objitem.processorid \ n"

+ "Exit for" does the first CPU only! \ n "+" Next \ n ";

+ "Exit for \ r \ n" + "Next";

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 ();

File.delete ();

} catch (Exception e) {

E.fillinstacktrace ();

}

if (Result.trim (). Length () < 1 | | result = = NULL) {

result = "No cpu_id is read";

}

return Result.trim ();

}

/** * * Get MAC Address */

public static String Getmac () {

String result = "";

try {

Process process = Runtime.getruntime (). EXEC ("ipconfig");///all ");

InputStreamReader ir = new InputStreamReader (

Process.getinputstream ());

LineNumberReader input = new LineNumberReader (IR);

String Line;

while (line = Input.readline ()) = null)

if (Line.indexof ("Physical Address") > 0| | Line.indexof ("Physical Address") > 0) {

String macaddr = line.substring (Line.indexof ("-")-2);

result = MACADDR;

}

} catch (Java.io.IOException e) {

System.err.println ("IOException" + e.getmessage ());

}

return result;

}

public static void Main (string[] args) {

System.out.println ("CPU SN:" + hardwareutils.getcpuserial ());

SYSTEM.OUT.PRINTLN ("Motherboard SN:" + HARDWAREUTILS.GETMOTHERBOARDSN ());

System.out.println ("C-plate SN:" + HARDWAREUTILS.GETHARDDISKSN ("C"));

System.out.println ("MAC SN:" + Hardwareutils.getmac ());

}

}

Note: There is a problem with the method of getting the Mac, the idea is to execute the ipconfig/all command and get the value of the physical address in the output result, but when testing on Win7, there are multiple physical addresses in the output of the Ipconfig/all command, and the last address is obtained in the code. Its accuracy remains to be verified. Also: For Windows systems only, Linux requires code changes, such as the command to view IP addresses under Linux ifconfig instead of Ipconfig.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.