zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)
    关于 centos 7系统,iptables透明网桥实现
    C 语言实现字符串替换
    linux 程序调用system执行命令
    linux C/C++ 日志打印函数
    关于socket编程获取客户端地址笔记
    C# treeview 使用笔记
    SIP DB33标准笔记 监控图像获取
    SIP DB33标准笔记 注册/目录发送/心跳
    contos 7/redhat 7 安装mysql
  • 原文地址:https://www.cnblogs.com/sm21312/p/3909691.html
Copyright © 2011-2022 走看看