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。

  • 相关阅读:
    085 Maximal Rectangle 最大矩形
    084 Largest Rectangle in Histogram 柱状图中最大的矩形
    083 Remove Duplicates from Sorted List 有序链表中删除重复的结点
    082 Remove Duplicates from Sorted List II 有序的链表删除重复的结点 II
    081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
    080 Remove Duplicates from Sorted Array II 从排序阵列中删除重复 II
    079 Word Search 单词搜索
    078 Subsets 子集
    bzoj2326: [HNOI2011]数学作业
    bzoj2152: 聪聪可可
  • 原文地址:https://www.cnblogs.com/sm21312/p/3909691.html
Copyright © 2011-2022 走看看