java获取电脑部分信息
Posted 张亚南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java获取电脑部分信息相关的知识,希望对你有一定的参考价值。
获取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") " + "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(); 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获取电脑部分信息的主要内容,如果未能解决你的问题,请参考以下文章
java 代码如何获取用户的硬件信息,就是判断用户是不是用同一个手机或者同一台电脑或者同一个ipad访问了
从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration
错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段