Java获得硬盘和主板的序列号代码
2018-07-20 来源:open-open
当你需要获得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
标签: 脚本
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:Java获取某年某周的最后一天
下一篇:java生成高清缩略图
最新资讯
热门推荐