当你需要获得windows硬件细节时,java可能不是最好的工具。 简直无从下手,不过可以通过VBS脚本获得需要的数据,然后java调用VBS获得输出。
VBS脚本通过查询WMI来获得系统硬件信息。 我们需要Win32_BaseBoard类,更多可以参考 http://msdn2.microsoft.com/en-us/library/aa389273.aspx.
获得主板信息:
- import java.io.File;
- import java.io.FileWriter;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- http://www.kmnk03.com/hxpfk/dzpz/309.html
- public class MiscUtils {
- private MiscUtils() { }
- public static String getMotherboardSN() {
- String result = "";
- try {
- File file = File.createTempFile("realhowto",".vbs");
- file.deleteOnExit();
- FileWriter fw = new java.io.FileWriter(file);
- http://www.kmnk03.com/hxpfk/npx/310.html
- 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";
- http://www.kmnk03.com/hxpfk/npx/311.html
- 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();
- }http://www.kmnk03.com/hxpfk/py/312.html
- catch(Exception e){
- e.printStackTrace();
- }
- return result.trim();
- }
- public static void main(String[] args){
- String cpuId = MiscUtils.getMotherboardSN();
- javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
- null, cpuId, "Motherboard serial number",
- javax.swing.JOptionPane.DEFAULT_OPTION);
- }
- }http://www.kmnk03.com/hxpfk/py/313.html
获得硬盘序列号:
- import java.io.File;http://www.kmnk03.com/hxpfk/xmz/314.html
- import java.io.FileWriter;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- http://www.kmnk03.com/hxpfk/xmz/315.html
- public class DiskUtils {
- private DiskUtils() { }
- public static String getSerialNumber(String drive) {
- String result = "";
- try {
- File file = File.createTempFile("realhowto",".vbs");
- file.deleteOnExit();
- FileWriter fw = new java.io.FileWriter(file);
- http://www.kmnk03.com/hxpfk/ylb/316.html
- 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;
- }http://www.kmnk03.com/hxpfk/ylb/317.html
- input.close();
- }
- catch(Exception e){
- e.printStackTrace();
- }http://www.kmnk03.com/hxpfk/ylb/319.html
- return result.trim();
- }
- kmnk03.com kmnk01.com
- public static void main(String[] args){
- String sn = DiskUtils.getSerialNumber("C");
- javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
- null, sn, "Serial Number of C:",
- javax.swing.JOptionPane.DEFAULT_OPTION);
- }www.kmnk01.com
- www.kmnk03.com
- }