• java获取计算机硬件参数


    public class HardWareUtils {

     /**   *   * 获取主板序列号   *   *   *   * @return   */

     public static String getMotherboardSN() {

      String result = "";

      try {

       File file = File.createTempFile("realhowto", ".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_BaseBoard") "

         + "For Each objItem in colItems "

         + "    Wscript.Echo objItem.SerialNumber "

         + "    exit for  ' do the first cpu only! " + "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();

      } catch (Exception e) {

       e.printStackTrace();

      }

      return result.trim();

     }

     /**   *   * 获取硬盘序列号   *   *   *   * @param drive   *   *            盘符   *   * @return   */

     public static String getHardDiskSN(String drive) {

      String result = "";

      try {

       File file = File.createTempFile("realhowto", ".vbs");

       file.deleteOnExit();

       FileWriter fw = new java.io.FileWriter(file);

       String vbs = "Set objFSO = CreateObject("Scripting.FileSystemObject") "

         + "Set colDrives = objFSO.Drives "

         + "Set objDrive = colDrives.item(""

         + drive

         + "") "

         + "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();

     }

     /**   *   * 获取CPU序列号   *   *   *   * @return   */

     public static String getCPUSerial() {

      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();

       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();

     }

     /**   *   * 获取MAC地址   */

     public static String getMac() {

      String result = "";

      try {

       Process process = Runtime.getRuntime().exec("ipconfig");// /all");

       InputStreamReader ir = new InputStreamReader(

       process.getInputStream());

       LineNumberReader input = new LineNumberReader(ir);

       String line;

       while ((line = input.readLine()) != null)

        if (line.indexOf("Physical Address") > 0||line.indexOf("物理地址") > 0) {

         String MACAddr = line.substring(line.indexOf("-") - 2);

         result = MACAddr;

        }

      } catch (java.io.IOException e) {

       System.err.println("IOException " + e.getMessage());

      }

      return result;

     }

     public static void main(String[] args) {

      System.out.println("CPU  SN:" + HardWareUtils.getCPUSerial());

      System.out.println("主板  SN:" + HardWareUtils.getMotherboardSN());

      System.out.println("C盘   SN:" + HardWareUtils.getHardDiskSN("c"));

      System.out.println("MAC  SN:" + HardWareUtils.getMac());

     }

    }

    注:获取MAC的方法有问题,其思路是执行ipconfig /all命令并获取输出结果中的物理地址的值,但是在win7上测试时,ipconfig /all命令的输出结果中有多个物理地址,代码中取得的是最后一个地址,其准确性有待考证。另:仅适用于windows系统,linux时需要修改代码,如linux下查看ip地址的命令是ifconfig而不是ipconfig。

  • 相关阅读:
    ef core中如何实现多对多的表映射关系
    asp.net mvc 实现简单的实时消息推送
    C#中三层架构UI、BLL、DAL、Model实际操作
    搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi
    基于.NET Core 框架搭建WebApi项目
    16位GUID
    VS2017企业版的密钥
    通过微软的cors类库,让ASP.NET Web API 支持 CORS
    Web API 跨域访问(CORS)
    [HDU1394]Minimum Inversion Number
  • 原文地址:https://www.cnblogs.com/sm21312/p/3909691.html
Copyright © 2020-2023  润新知