zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
  • 相关阅读:
    对称加密与非对称加密
    mysql 数据库备份
    Linux安装VM虚拟机
    Ubuntu安装桌面
    POM 总是提示找不到依赖
    Wine解决界面乱码
    There was an unexpected error (type=Not Found, status=404). /WEB-INF/views/login.jsp
    Linux打开chm文件
    vim 查找模式
    spring总结(02)注解
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9434205.html
Copyright © 2011-2022 走看看