JAVA 通过 JACOB 调用 WMI

 1 import com.jacob.activeX.ActiveXComponent;
 2 import com.jacob.com.Dispatch;
 3 import com.jacob.com.EnumVariant;
 4 import com.jacob.com.Variant;
 5 
 6 public class TestWMI {
 7 
 8     public static void main(String[] args) {
 9 
10         Variant wmiNoParam = getWMI("SELECT * FROM Win32_Service WHERE started = 1");
11         printProperty(wmiNoParam,"Name","ProcessId");
12         Variant wmiWithParam = getWMI("SELECT * FROM Win32_SerialPort","WQL", 0x10|0x20);
13         printProperty(wmiWithParam,"DeviceID");
14     }
15 
16     private static void printProperty(Variant vCollection, String... properties) {
17         EnumVariant enumVariant = new EnumVariant(vCollection.toDispatch());
18 
19         while (enumVariant.hasMoreElements()) {
20             Dispatch item = enumVariant.nextElement().toDispatch();
21             for (String property : properties) {
22                 Variant variant = Dispatch.call(item, property);
23                 System.out.println(variant);
24             }
25         }
26     }
27 
28     public static Variant getWMI(String query, Object... param) {
29         String host = "localhost";
30         String connectStr = String.format("winmgmts:\\\\%s\\root\\CIMV2", host);
31         ActiveXComponent wmi = new ActiveXComponent(connectStr);
32         Variant[] vs = new Variant[param.length + 1];
33         vs[0] = new Variant(query);
34         for (int i = 0; i < param.length; i++) {
35             vs[i + 1] = new Variant(param[i]);
36         }
37         Variant vCollection = wmi.invoke("ExecQuery", vs);
38         return vCollection;
39     }
40 
41 }

 

转载于:https://www.cnblogs.com/sea-leaf/p/3185642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值