java中使用wmi功能

首先,看到题目的朋友有的会郁闷,什么是WMI? 关于WMI的基本知识,使用方法等,网上有很多实例,这里就不多做解释,可以Google到. 关键字: WMI基础知识 WMI应用…

网上能找到关于WMI使用的最多的就是使用C# 或者 VB 的.可是最近在一个J2SE的项目中也要实现WMI的功能.在目标机不安装任何的客户端的情况下要实现远程管理.有朋友马上就想到使用JNI调用DLL,然后在DLL中封装方法.可是,对于不会C++的朋友们来说就是梦魇.今天,在这里我就简单的说下我的实现思路,可能有点投机,不过功能是实现了..嘿嘿.

首先,先说下简单的思路,如果朋友们看明白了,那么就可以自己去实现了,没看明白的后面会详细解释的.

我的实现方法:使用C#语言开发控制台程序,并封装WMI的访问功能, 然后在java程序中执行这个控制台程序,并拿到结果进行处理.

哦了,思路就是这样的,初步测试丝毫没有问题,下面我们就来详细的看一下这个思路的实现:

首先是C#程序的开发,这里新建控制台程序,我就不再啰嗦了,直接看程序,

新建好控制台程序后在Main方法中添加如下代码:

//获取参数

string strIP = args[0];

string strName = args[1];

string strPwd = args[2];

//获取连接

ManagementScope ms = WConnection.GetConnection(strIP, strName, strPwd);

//WConnection类是自己封装的,这里创建连接并得到ManagementScope对象网上有很多的.

//设定查询内容

ObjectQuery query =new ObjectQuery(“select * from Win32_ PerfFormattedData_ PerfProc_ Process”);

ManagementObjectSearcher searcher = new ManagementObjectSearcher(ms, query);

//执行查询

ManagementObjectCollection ReturnCollection = searcher.Get();

//检索集合

foreach (ManagementObject Item in ReturnCollection)

{

Console.WriteLine(Item ["Name"].ToString());//这里省略其他属性的输出

}

哦了,最后要给我们的这端代码加上Try{}处理,防止异常发生.

按F6 键 启动生成..