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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Html的空格显示

    Html的空格显示

    2021年11月24日
    117
  • 《欧美剧集观看最佳索引》(US SHOWS GUIDE) 【2005-12-27 转verycd】

    《欧美剧集观看最佳索引》(US SHOWS GUIDE) 【2005-12-27 转verycd】原文地址http://bbs.verycd.com/topics/230847/中文名称:欧美剧集观看最佳索引英文名称:USTVSHOWSGUIDE别名:欧美剧集观看最佳索引版本:2005-2006导演:USTVSHOWSGUIDE演员:USTVSHOWSGUIDE简介:欧美剧集观看最佳索引2005-2006USTVSHOWSGUIDE2005-2006(作者:

    2022年5月6日
    57
  • anaconda prompt系统找不到指定的路径_tensorflow怎么用

    anaconda prompt系统找不到指定的路径_tensorflow怎么用我们默认打开jupyternotebook一般是在C盘,那么久而久之你很多的代码都新建在C盘,以后想要清理的时候难免会比较困难,所以在这里推荐大家通过命令在D盘指定目录下打开jupyternotebook,那么你新建的所有文件都是在D盘的指定目录下啦!…

    2022年10月8日
    0
  • creator drawcall优化_drawellipse函数

    creator drawcall优化_drawellipse函数前言*在游戏开发中,DrawCall作为一个非常重要的性能指标,直接影响游戏的整体性能表现。无论是CocosCreator、Unity、Unreal还是其他游戏引擎,只要说到游戏性能优化,DrawCall都是绝对少不了的一项。本文将会介绍什么是DrawCall,为什么要减少DrawCall以及在CocosCreator项目中如何减少DrawCall来提升游戏性能。正文什么是DrawCall?DrawCall中文译为“绘制调用”或“绘图指令”。DrawCall是

    2022年9月19日
    0
  • 好看又有趣的404页面设计[通俗易懂]

    好看又有趣的404页面设计[通俗易懂]404页面作为提示错误的媒介,起着承上启下的作品,既要保证用户在看到错误页面的同时不会直接退出,又要给用户提供新的操作选择,两者兼顾才会有更好的用户体验。现在更多设计师愿意到可以到乐于分享学习经验的集设网www.ijishe.com,优秀的成功案例,可以开拓设计师的思路,值得在下一个项目中积攒经验!404页面这样设计好看又有趣-集设设计没思路,那么就需要从这几个方面着手:1、了解产品的背景,产品未来发展方向。2、去搜UI

    2022年7月27日
    2
  • uboot、kernel和rootfs烧录「建议收藏」

    uboot、kernel和rootfs烧录「建议收藏」烧写主u-bootmw.b0x420000000xff0x100000tftp0x42000000master/image_glibc/u-boot-hi3536.binsfprobe0sferase0x00x100000sfwrite0x420000000x00x100000reset注:1)这里的mw.b以字节写入,0x42000000是ddr的起始…

    2022年10月6日
    0

发表回复

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

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