1 package waf.hardware;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileWriter;
6 import java.io.InputStreamReader;
7
8 /**
9 *
10 * @author waf.wang
11 *
12 */
13 public class HardwareInfo {
14
15 /**
16 * @param args
17 */
18 public static void main(String[] args) {
19 String mainBoardId=getMainboardSerialNumber();
20 String diskDriverId=getDiscDriverSerialNumber("C");
21 String diskId=getDiscSerialNumber();
22 }
23
24 public static String getMainboardSerialNumber() {
25 String vbs =
26 "Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")\n"
27 + "Set colItems = objWMIService.ExecQuery _ \n"
28 + " (\"Select * from Win32_BaseBoard\") \n"
29 + "For Each objItem in colItems \n"
30 + " Wscript.Echo objItem.SerialNumber \n"
31 + " exit for ' do the first only! \n"
32 + "Next \n";
33 return executeVBS(vbs);
34 }
35
36 public static String getDiscDriverSerialNumber(String drive)
37 {
38 String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n"
39 + "Set colDrives = objFSO.Drives\n"
40 + "Set objDrive = colDrives.item(\""
41 + drive
42 + "\")\n"
43 + "Wscript.Echo objDrive.SerialNumber"; // see note
44 return executeVBS(vbs);
45 }
46 public static String getDiscSerialNumber()
47 {
48 String vbs = "Set wmi=GetObject(\"Winmgmts://./root/cimv2\")\n"
49 + "Set wqd=wmi.ExecQuery(\"Select * From Win32_DiskDrive\")\n"
50 + "For Each objDisk In wqd\n"
51 + " Wscript.Echo objdisk.PNPDeviceID \n"
52 + " exit for ' do the first only! \n"
53 + "Next \n";
54
55 return executeVBS(vbs);
56 }
57 public static String executeVBS(String vbs)
58 {
59 String result = "";
60 try {
61 File file = File.createTempFile("realhowto", ".vbs");
62 file.deleteOnExit();
63 FileWriter fw = new java.io.FileWriter(file);
64 fw.write(vbs);
65 fw.close();
66 Process p = Runtime.getRuntime().exec(
67 "cscript //NoLogo " + file.getPath());
68 BufferedReader input = new BufferedReader(new InputStreamReader(p
69 .getInputStream()));
70 String line;
71 while ((line = input.readLine()) != null) {
72 result += line;
73 }
74 input.close();
75 } catch (Exception e) {
76 e.printStackTrace();
77 }
78 return result.trim();
79 }
80
81 public static String getMachineCode()
82 {
83 String machineCode=HardwareInfo.getMainboardSerialNumber()+","+HardwareInfo.getDiscSerialNumber()+","+HardwareInfo.getDiscDriverSerialNumber("C");
84 return machineCode;
85 }
86 }