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.