java擷取電腦硬體參數

來源:互聯網
上載者:User

標籤:java   os   io   for   ar   問題   代碼   linux   

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

 }

 /**   *   * 擷取硬碟序號   *   *   *   * @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\")\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();

 }

 /**   *   * 擷取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\")\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();

 }

 /**   *   * 擷取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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.