欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java获得硬盘和主板的序列号,java获得序列号,当你需要获得window

来源: javaer 分享于  点击 21531 次 点评:129

Java获得硬盘和主板的序列号,java获得序列号,当你需要获得window


当你需要获得windows硬件细节时,java可能不是最好的工具。 简直无从下手,不过可以通过VBS脚本获得需要的数据,然后java调用VBS获得输出。

VBS脚本通过查询WMI来获得系统硬件信息。 我们需要Win32_BaseBoard类,更多可以参考 http://msdn2.microsoft.com/en-us/library/aa389273.aspx.

获得主板信息:

import java.io.File;import java.io.FileWriter;import java.io.BufferedReader;import java.io.InputStreamReader;public class MiscUtils {  private MiscUtils() {  }  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();  }  public static void main(String[] args){    String cpuId = MiscUtils.getMotherboardSN();    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)         null, cpuId, "Motherboard serial number",         javax.swing.JOptionPane.DEFAULT_OPTION);  }}

获得硬盘序列号:

import java.io.File;import java.io.FileWriter;import java.io.BufferedReader;import java.io.InputStreamReader;public class DiskUtils {  private DiskUtils() {  }  public static String getSerialNumber(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();  }  public static void main(String[] args){    String sn = DiskUtils.getSerialNumber("C");    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)         null, sn, "Serial Number of C:",         javax.swing.JOptionPane.DEFAULT_OPTION);  }}

说明: 还可以获得其他更多属性如: objDrive.AvailableSpace/DriveType/FileSystem/IsReady

相关栏目:

用户点评