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 键 启动生成..