package cn.net.comsys.helper.system.info; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.LineNumberReader; public class HardWareUtils { /** * 获取主板序列号 * * @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") " + "Set colItems = objWMIService.ExecQuery _ " + " ("Select * from Win32_BaseBoard") " + "For Each objItem in colItems " + " Wscript.Echo objItem.SerialNumber " + " exit for ' do the first cpu only! " + "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(); } catch (Exception e) { e.printStackTrace(); } return result.trim(); } /** * 获取硬盘序列号 * * @param drive * 盘符 * @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") " + "Set colDrives = objFSO.Drives " + "Set objDrive = colDrives.item("" + drive + "") " + "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(); } /** * 获取CPU序列号 * * @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") " + "Set colItems = objWMIService.ExecQuery _ " + " ("Select * from Win32_Processor") " + "For Each objItem in colItems " + " Wscript.Echo objItem.ProcessorId " + " exit for ' do the first cpu only! " + "Next "; // + " exit for " + "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 = "无CPU_ID被读取"; } return result.trim(); } /** * 获取MAC地址 */ 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) { 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("主板 SN:" + HardWareUtils.getMotherboardSN()); System.out.println("C盘 SN:" + HardWareUtils.getHardDiskSN("c")); System.out.println("MAC SN:" + HardWareUtils.getMac()); } }
Linux:
命令:
0、查看CPUID:dmidecode -t processor | grep 'ID'
1、查看服务器型号:dmidecode | grep 'Product Name'
2、查看主板的序列号:dmidecode |grep 'Serial Number'
3、查看系统序列号:dmidecode -s system-serial-number
4、查看内存信息:dmidecode -t memory
5、查看OEM信息:dmidecode -t 11