1 什么是WMI?
Windows Management Instrumentation (WMI)是可伸缩的系统管理结构,该规范采用一个统一、基于标准且可扩展的面向对象接口。它提供与系统管理员信息和基础WMI API交互的标准方法,主要由系统管理应用程序开发人员和系统管理员用来访问和操作系统管理信息;它可用来生成组织和管理系统信息的工具,使系统管理人员能够更密切的监视系统活动。
WMI提供了一套内置在Microsoft Windows操作系统中的丰富的系统管理服务,可以在有大量的应用程序、服务和设备的系统中提供全方位的管理功能。它允许应用程序的开发者,使用简单的、一致的机制,去查询企业中的任一台计算机上的信息,或是进行系统配置。
通过WMI接口可以获得的信息量是惊人的,包括硬件设置,状态信息,驱动器配置,BIOS信息,应用程序的设置,事件记录信息,以及其他。WMI通过一组API来获得信息,但它表征的是一种通过一个简单,工业标准对象管理模式来获取信息的函数。这使得应用程序的开发者不必学习Windows的每一个API的具体细节。
.Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management"。在命名空间"System.Management"中提供了大量用以处理和WMI相关的类、接口和枚举。在使用WMI之前,必须在工程中添加对System.Management.dll的引用,然后声明
using System.Management;
2 使用WMI连接远程计算机
系统管理员可以通过目标机器的机器名(或者IP地址),用户名以及密码去查询远程计算机的状态和信息,以及利用脚本执行一些管理工作。利用WMI连接远程计算机是很方便的,可以参考下面的格式
ManagementObjectSearcher query;
ManagementObjectCollection queryCollection;
System.Management.ObjectQuery oq;
string machineName = "110.119.110.1"; //连接的目标机的IP地址或者机器名
co.Username = "YourName"; //连接需要的用户名
co.Password = "YourPassword"; //连接需要的密码
string connectString = "SELECT * FROM Win32_PnPSignedDriver"; //查询字符串
System.Management.ManagementScope ms = new System.Management.ManagementScope("" + machineName + "rootcimv2", co);
oq = new System.Management.ObjectQuery( connectString );
query = new ManagementObjectSearcher( ms, oq );
queryCollection = query.Get();
通过IP地址,用户名和密码就建立了一个可以查询Win32_PnPSignedDrvier这个类(关于这个类的详细信息请查询MSDN)所有信息的连接。现在我们就可以远程获取目标机器上的所有Pnp驱动的信息了。是不是很方便?在得到所有的信息后,我们可以通过下面的两种方式来获取我们需要的属性










