Java 获取硬件信息
来源:互联网 发布:农村人口老龄化数据 编辑:程序博客网 时间:2024/06/07 16:38
In these 2 examples, we create the appropriate VBS script file on-the-fly and capture its output. They are very Windows oriented since they rely on the "Windows Script Host" to execute the generated scripts.
The vbscript queries a WMI class to get a specific hardware information. Here we are using the Win32_BaseBoard but they are many others, see http://msdn2.microsoft.com/en-us/library/aa389273.aspx for complete list.
Motherboard serial number
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); }}
Hard disk serial number
This serial number is created by the OS where formatting the drive and it's not the manufacturer serial number. It's unique, because it is created on the fly based on the current time information. AFAIK, there is no API that return that the manufacturer SN. At best, the SN of the HD firmware can be read but this will involve some very low-level API calls. Keep in mind that even if you get that number, there is no warranty that it will be unique since each manufacturer can assign the SN as they wish.
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); }}
NOTE : Other properties : objDrive.AvailableSpace/DriveType/FileSystem/IsReady
- java获取硬件信息
- Java 获取硬件信息
- java 获取硬件的信息
- java 获取硬件的信息
- Java中使用VBScript获取硬件信息
- java使用siger 获取服务器硬件信息
- 获取硬件信息
- 获取硬件信息
- C#获取硬件信息
- C#获取硬件信息
- c# 获取硬件信息
- c#获取硬件信息
- C#获取硬件信息
- 获取硬件信息
- 获取硬件信息
- C#获取硬件信息
- WMI获取硬件信息
- 获取系统硬件信息
- hdu 1307(dfs+map+set)
- CodeForces 20C
- hdu3999 二叉树前序
- SSH免密码登陆步骤&jDK在Linux的安装
- 判断点是否在矩形内
- Java 获取硬件信息
- 复习图--WuKong
- zoj 1025 Wooden Sticks
- noip 2011 选择客栈
- java垃圾回收算法
- 1.8 C语言的文件系统
- WINCE--流设备驱动简介及往BSP添加
- Microsoft Interview: In binary tree, find two nodes' nearest common father
- 最小堆实现