1. 程式人生 > >java獲取電腦部分信息

java獲取電腦部分信息

pre \n buffere roc 是把 lower macaddr EDA res

獲取mac地址與cpu序列號

參考博客:https://www.jb51.net/article/94793.htm

另一篇參考地址沒記錄下來

package util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @todo 獲取電腦配置信息 * @author zhangyanan * @date 2018年8月6日 */ public class CpuUtil { private static
final Logger logger = LoggerFactory.getLogger(CpuUtil.class);/** * @todo 獲取電腦cpu序列號 * @author zhangyanan * @date 2018年8月6日 */ public static String getCPUSerial() { String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("win")) {
return CpuUtil.getWindowsCPUSerial(); } else { return CpuUtil.getLinuxCPUSerial(); } } /** * @todo windows獲取cpu序列號 * @author zhangyanan * @date 2018年8月6日 */ public static String getWindowsCPUSerial() { String serial = null; try { Process process = Runtime.getRuntime().exec(new String[] { "wmic", "cpu", "get", "ProcessorId" }); process.getOutputStream().close(); Scanner sc = new Scanner(process.getInputStream()); sc.next(); serial = sc.next(); sc.close(); } catch (Exception e) { logger.error("getWindowsCPUSerial異常", e); } return serial; } /** * @todo linux獲取cpu序列號 * @author zhangyanan * @date 2018年8月6日 */ public static String getLinuxCPUSerial() { 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(); String path = file.getPath().replace("%20", " "); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + path); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { logger.error("getLinuxCPUSerial異常", e); } return result; } /** * @todo 獲取mac地址 * @author zhangyanan * @date 2018年8月6日 */ public static String getMACAddress() { InetAddress ia; try { ia = InetAddress.getLocalHost(); return getMACAddress(ia); } catch (UnknownHostException e) { logger.error("getMACAddress()異常", e); return null; } } /** * @todo 獲取mac地址 * @author zhangyanan * @date 2018年8月6日 */ public static String getMACAddress(InetAddress ia) { // 獲得網絡接口對象(即網卡),並得到mac地址,mac地址存在於一個byte數組中。 try { byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress(); // 下面代碼是把mac地址拼裝成String StringBuffer sb = new StringBuffer(); for (int i = 0; i < mac.length; i++) { if (i != 0) { sb.append("-"); } // mac[i] & 0xFF 是為了把byte轉化為正整數 String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字符串所有小寫字母改為大寫成為正規的mac地址並返回 return sb.toString().toUpperCase(); } catch (SocketException e) { logger.error("getMACAddress異常!", e); return null; } } }

java獲取電腦部分信息