zoukankan      html  css  js  c++  java
  • java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)

    windows:

    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\")\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";
    
    			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\")\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();
    	}
    
    	/**
    	 * 获取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\")\n"
    					+ "Set colItems = objWMIService.ExecQuery _ \n"
    					+ "   (\"Select * from Win32_Processor\") \n"
    					+ "For Each objItem in colItems \n"
    					+ "    Wscript.Echo objItem.ProcessorId \n"
    					+ "    exit for  ' do 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 = "无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

  • 相关阅读:
    IDEA安装和JDK的配置
    IDEA里面创建maven项目,依赖
    JSON的简单书写(初学),使用Java语言反序列化
    Spring中的转换器:Converter
    关于Spring MVC中的表单标签库的使用
    解决Spring框架下中文乱码的问题
    SpringMVC中使用DispatcherServlet
    八大排序算法:冒泡排序
    总线与南桥和北桥
    设备驱动与控制器 I/O
  • 原文地址:https://www.cnblogs.com/jifeng/p/2802632.html
Copyright © 2011-2022 走看看