Java 获得硬件信息

 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 }

 

posted @ 2020-04-25 02:31  从程序员到CTO  阅读(99)  评论(0)    收藏  举报
交流加我QQ:39667545