Java.Utils:获取电脑配置信息

Java.Utils:获取电脑配置信息packagecom.boob.common.utils;importjava.io.*;/***@description:电脑配置信息*@author:boob*@since:2020/2/7*/publicclassHardwareUtils{publicHardwareUtils(){}/***获取…

大家好,又见面了,我是你们的朋友全栈君。

Don’t say much, just go to the code.

package org.bood.common.utils;

import java.io.*;

/** * 获取电脑配置信息 * * @author bood * @since 2020/10/16 */
public class HardwareUtils { 
   

    private HardwareUtils() { 
   
    }

    /** * <p> * 获取主板序列号 * </p> * * @return:java.lang.String * @author:bood * @date:2020/10/16 */
    public static String getMotherboardSN() { 
   
        String result = "";
        try { 
   
            File file = File.createTempFile("realhowto", ".vbs");
            file.deleteOnExit();
            FileWriter fw = new 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();
    }

    /** * <p> * 获取硬盘序列号 * </p> * * @param drive: 盘符 * @return:java.lang.String * @author:bood * @date:2020/10/16 */
    public static String getHardDiskSN(String drive) { 
   
        String result = "";
        try { 
   
            File file = File.createTempFile("realhowto", ".vbs");
            file.deleteOnExit();
            FileWriter fw = new 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();
    }

    /** * <p> * 获取 CPU 序列号 * </p> * * @return:java.lang.String * @author:bood * @date:2020/10/16 */
    public static String getCPUSerial() { 
   
        String result = "";
        try { 
   
            File file = File.createTempFile("tmp", ".vbs");
            file.deleteOnExit();
            FileWriter fw = new 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();
    }

    /** * <p> * 获取MAC地址,使用前请修改,只适合中文系统,并且名称为以太网适配器的网卡地址 * </p> * * @return:java.lang.String * @author:bood * @date:2020/10/16 */
    @Deprecated
    public static String getMac() { 
   
        String result = "";
        try { 
   

            Process process = Runtime.getRuntime().exec("ipconfig /all");
            InputStreamReader ir = new InputStreamReader(process.getInputStream(), "GBK");
            LineNumberReader input = new LineNumberReader(ir);

            String line;

            while ((line = input.readLine()) != null) { 
   
                if (line.indexOf("以太网适配器") != -1) { 
   
                    while ((line = input.readLine()) != null) { 
   
                        if (line.indexOf("Physical Address") >= 0 || line.indexOf("物理地址") >= 0) { 
   
                            String MACAddr = line.substring(line.indexOf("-") - 2);
                            result = MACAddr;
                            break;
                        }
                    }
                    break;
                }
            }
        } catch (IOException e) { 
   
            System.err.println("IOException " + e.getMessage());
        }
        return result;
    }

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159024.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月14日 下午3:46
下一篇 2022年7月14日 下午3:46


相关推荐

  • Javaweb 聊天室

    Javaweb 聊天室Javaweb聊天室前言java课程结束了之后,老师要求我们用java做一个关于聊天室的课程设计,于是我就想做一个web应用,在这里只是纯分享,如果想要源码的,可以在评论里说。一、实验目的做一个Javaweb聊天室系统1.实现登录功能2.注册功能3.发送聊天内容功能4.接收消息5…

    2022年6月22日
    39
  • SSE,SSR,SSE 的关系

    SSE,SSR,SSE 的关系一 SSE 和方差 该统计参数计算的是拟合数据和原始数据对应点的误差的平方和 计算公式如下 SSE 越接近于 0 说明模型选择和拟合更好 数据预测也越成功 接下来的 MSE 和 RMSE 因为和 SSE 是同出一宗 所以效果一样二 MSE 均方差 该统计参数是预测数据和原始数据对应点误差的平方和的均值 也就是 SSE n 和 SSE 没有太大的区别 计算公式如下三 RMSE 均方

    2026年3月17日
    2
  • Laravel5.5+ 区分前后端用户登录

    Laravel5.5+ 区分前后端用户登录

    2021年11月8日
    40
  • linux安装telnet服务「建议收藏」

    linux安装telnet服务「建议收藏」文章目录前言一、telnet是什么?二、使用步骤1.安装telent2、重新启动守护进程3、测试总结前言最新公司需要迁移项目需要用到telnet命令,趁此机会做个总结归纳提示:以下是本篇文章正文内容,下面案例可供参考一、telnet是什么?telnet是一种简单的基于文本的网络协议,用于通过“TCP/IP”网络访问远程计算机和终端;telnet为用户提供了一个双向的交互式文本通信系统,该系统使用超过8字节的虚拟终端连接。二、使用步骤1.安装telent步骤如下:tep1、rpm.

    2025年7月9日
    2
  • 为什么用了大牌工具后报表开发依然头痛

    为什么用了大牌工具后报表开发依然头痛报表工具不就是为了解决手工开发报表效率低 困难多等这些让人头痛的难题的吗 怎么用了大牌工具还会头痛 是功能不行解决不了这些问题

    2026年3月26日
    1
  • 工作格言

    工作格言

    2021年7月25日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号