Получить информацию об оборудовании в приложении Java
View more Tutorials:
Иногда вам нужно использовать Java, чтобы получить информацию о компьютерных аппаратных средствах, в том числе Serial Number схемы (Mainboard), serial жесткого диска, CPU, ...
К сожалению, Java не имеет такого API, или может быть имеет, но он не был выпущен бесплатно для программистов . Тем не менее, на Windows, вы можете получить эту информацию, выполнением сценария VB (VB Script).
К сожалению, Java не имеет такого API, или может быть имеет, но он не был выпущен бесплатно для программистов . Тем не менее, на Windows, вы можете получить эту информацию, выполнением сценария VB (VB Script).

ОК, для простоты, вы можете создавать файл с названием myscript.vbs:
myscript.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select Name,UUID,Vendor,Version from Win32_ComputerSystemProduct") For Each objItem in colItems Wscript.Echo objItem.Name Wscript.Echo objItem.UUID Wscript.Echo objItem.Vendor Wscript.Echo objItem.Version Next
В window кликните в файл, чтобы запустить его

При этом, Win32_ComputerSystemProduct -это класс Visual Basic, свойства этого класса:
Properties |
string Caption |
string Description |
string IdentifyingNumber |
string Name |
string SKUNumber |
string UUID |
string Vendor |
string Version |
Вы можете запустить полный файл сценария:
Win32_ComputerSystemProduct.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystemProduct") For Each objItem in colItems Wscript.Echo objItem.Caption Wscript.Echo objItem.Description Wscript.Echo objItem.IdentifyingNumber Wscript.Echo objItem.Name Wscript.Echo objItem.SKUNumber Wscript.Echo objItem.UUID Wscript.Echo objItem.Vendor Wscript.Echo objItem.Version Next
Полученные результаты ( В соответствии с моим компьютером):
Property | Value (My Computer) |
Caption | Computer System Product |
Description | Computer System Product |
IdentifyingNumber | 3F027935U |
Name | Salellite S75B |
SKUNumber | null |
UUID | B09366C5-F0C7-E411-98E4-008CFA8C26DF |
Vendor | TOSHIBA |
Version | PSPPJU-07U051 |
Смотреть подробнее о классе Win32_ComputerSystemProduct по ссылке:
Некоторые другие классы Visual Basic, которые могут быть вам интересны:
Хорошо, Вы знаете, как использовать VB Script для получения информации аппаратного средства компьютера. Теперь вам нужно использовать Java, чтобы выполнить файлы VB Script и получить возвратное значение.
MyUtility.java
package org.o7planning.hardwareinfo; public class MyUtility { public static String makeVbScript(String vbClassName, String[] propNames) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < propNames.length; i++) { if (i < propNames.length - 1) { sb.append(propNames[i]).append(","); } else { sb.append(propNames[i]); } } String colNameString = sb.toString(); sb.setLength(0); sb.append("Set objWMIService = GetObject(\"winmgmts:\\\\.\\root\\cimv2\")").append("\n"); sb.append("Set colItems = objWMIService.ExecQuery _ ").append("\n"); sb.append("(\"Select ").append(colNameString).append(" from ").append(vbClassName).append("\") ").append("\n"); sb.append("For Each objItem in colItems ").append("\n"); for (String propName : propNames) { sb.append(" Wscript.Echo objItem.").append(propName).append("\n"); } sb.append("Next ").append("\n"); return sb.toString(); } }
GetHardwareInfo.java
package org.o7planning.hardwareinfo; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class GetHardwareInfo { public static void printComputerSystemProductInfo() { String vbClassName = "Win32_ComputerSystemProduct"; String[] propNames = new String[] { "Name", "UUID", "Vendor", "Version" }; String vbScript = MyUtility.makeVbScript(vbClassName, propNames); System.out.println("----------------------------------------"); System.out.println(vbScript); System.out.println("----------------------------------------"); try { // Create temporary file. File file = File.createTempFile("vbsfile", ".vbs"); System.out.println("Create File: " + file.getAbsolutePath()); System.out.println("------"); // Write script content to file. FileWriter fw = new FileWriter(file); fw.write(vbScript); fw.close(); // Execute the file. Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); // Create Input stream to read data returned after execute vb script file. BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); Map<String, String> map = new HashMap<String, String>(); String line; int i = 0; while ((line = input.readLine()) != null) { if (i >= propNames.length) { break; } String key = propNames[i]; map.put(key, line); i++; } input.close(); // for (String propName : propNames) { System.out.println(propName + " : " + map.get(propName)); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { printComputerSystemProductInfo(); } }
Запуск примера:
