Obtenir des informations sur le matériel dans l'application Java

View more categories:

1- Java API pour récupérer des informations matériel informatique?

Parfois, vous devez utiliser Java pour obtenir des informations sur le matériel informatique, y compris le numéro de série de la carte mère(Mainboard), la série du disque dur, la CPU, ...

Malheureusement, Java n'a pas de telle AP I, ou peut-être là, mais il n'a pas été libéré gratuitement pour les programmeurs. Cependant, sur Windows, vous pouvez obtenir ces informations en exécutant le script  VB ( VB Script).
 

2- Obtenir des informations matérielles en utilisant le fichier vbscript

OK, si simple, vous pouvez créer un fichier avec myscript.vbs de contenu
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
Sur Windows cliquez sur le fichier pour l'exécuter
 
Dans lequel Win32_ComputerSystemProduct est  une classe de  Visual Basic, les propriétés de cette classe:
Properties
string Caption
string Description
string IdentifyingNumber
string Name
string SKUNumber
string UUID
string Vendor
string Version
Vous pouvez exécuter un fichier de script plus complet:
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
Les valeurs obtenues (correspondent à mon ordinateur):
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
Voir plus de clase  Win32_ComputerSystemProduct à:
 
Voir plus Win32_ComputerSystemProduct:
 
 
Voir plus Win32_ComputerSystemProduct:
 
 
Certaines autres classes Visual Basic, vous pouvez intéresser:

3- Utilisez Java pour obtenir des informations sur le matériel informatique

OK ci-dessus, vous savez comment utiliser le vb script pour récupérer les informations matérielles de l'ordinateur. Maintenant, vous devez utiliser Java pour exécuter des fichiers de vb script et obtenir la valeur renvoyée.
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();
    }
   
}
Exécutez l'exemple:
 

View more categories: