.Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management"。在命名空间"System.Management"中提供了大量用以处理和WMI相关的类、接口和枚举。
命名空间"System.Management"中的成员是非常复杂的,由于篇幅所限完全介绍这些成员是不可能的,也是没有要的。根据我的经验,认为要了解、掌握在Visual C#中使用WMI,下面六个类应该是学习的重点,分别是ConnectionOptions、ManagementScope、ObjectQuery、ManagementObjectSearcher、ManagementObjectCollection和ManagementObject。下面就简单介绍一下六个类:
·ConnectionOptions类
ConnectionOptions类主要的功能是为建立的WMI连接提供所需的所有设置。在利用WMI对远程计算机进行操作的时候,首先要进行WMI连接,WMI连接主要是使用的是ManagementScope 类,成功完成WMI连接就要提供远程计算机WMI用户名和口令。ConnectionOptions类可以通过其属性来提供这些信息。表01是ConnectionOptions类的一些主要属性及其简单的说明。
表01:ConnectionOptions类常用属性及其说明
其中最常用的属性是Password和Username。
·ManagementScope 类
通过ManagementScope类能够建立和远程计算机(或者本地计算机)的WMI连接,表示管理可操作范围。创建WMI连接可以通过二种方法:
( 1 ) . 利用构造函数,当使用下面构造函数初始化ManagementScope 类实例,同时也就建立了WMI连接,具体如下:
参数:
path ManagementScope的服务器和命名空间。
options 包含有关连接的选项的 ConnectionOptions。
使用构造函数是有风险的,因为如果不能根据提供的选项建立WMI连接,程序会程序异常,出现错误。
下列代码是利用此构造函数构建建立ManagementScope实例,并建立于远程计算机majinhu的WMI连接:
( 2 ) . 利用ManagementScope中提供的Connect方法:
ManagementScope中的成员是非常少的,最常用的方法和属性各一个:常用属性是Options,主要为WMI建立提供参数;常用方法是Connect,通过它可以建立于远程计算机的WMI连接。下列是利用Connect方法建立WMI连接的具体代码:
·ObjectQuery类
ObjectQuery类或其派生类用于在ManagementObjectSearcher中指定查询。程序中一般采用查询字符串来构造ObjectQuery实例。其中的查询字符串是一种类似SQL语言的WQL语言。下面的ObjectQuery类构造函数中最常见的一种,具体语法如下:
参数:
query 查询的字符串
·ManagementObjectSearcher类
ManagementObjectSearcher主要是根据指定的查询检索WMI对象的集合。ManagementObjectSearcher组成成员也非常简单,其方法Get方法是非常重要的,ManagementObjectSearcher通过Get方法进行WMI查询,并把得到的结果集合。Get方法的返回值是一个ManagementObjectCollection实例,它包含匹配指定查询的对象。
表02是其ManagementObjectSearcher类的常用属性及其说明。
表02:ManagementObjectSearcher类常用属性及其说明
·ManagementObjectCollection类
ManagementObjectCollection类非常简单,它主要表示 WMI 实例的不同集合其中包括命名空间、范围和查询观察程序等。创建ManagementObjectCollection类没有构造函数。
·ManagementObject类
ManagementObject类为单个管理对象或类。通过ManagementObject中的方法可以调用ManagementObject对应的对象,从而执行相应的操作。ManagementObject类是一个内容丰富的类,表03和表04分别是其常用的属性和方法。
表03:ManagementObject类常用属性及其说明
表04:ManagementObject类常用方法及其说明
下面就结合二个具体的示例来介绍Visual C#中利用上述类,提供WMI掌握如何利用WMI编写网络应用程序,所使用的类库主要是使用了上面接收的这六个类。
命名空间"System.Management"中的成员是非常复杂的,由于篇幅所限完全介绍这些成员是不可能的,也是没有要的。根据我的经验,认为要了解、掌握在Visual C#中使用WMI,下面六个类应该是学习的重点,分别是ConnectionOptions、ManagementScope、ObjectQuery、ManagementObjectSearcher、ManagementObjectCollection和ManagementObject。下面就简单介绍一下六个类:
·ConnectionOptions类
ConnectionOptions类主要的功能是为建立的WMI连接提供所需的所有设置。在利用WMI对远程计算机进行操作的时候,首先要进行WMI连接,WMI连接主要是使用的是ManagementScope 类,成功完成WMI连接就要提供远程计算机WMI用户名和口令。ConnectionOptions类可以通过其属性来提供这些信息。表01是ConnectionOptions类的一些主要属性及其简单的说明。
属性 | 说明 |
Authority | 获取或设置将用于验证指定用户的权利。 |
Locale | 获取或设置将用于连接操作的区域设置。 |
Password | 提供用于WMI连接操作的口令。 |
Username | 提供用于WMI连接操作的用户名。 |
其中最常用的属性是Password和Username。
·ManagementScope 类
通过ManagementScope类能够建立和远程计算机(或者本地计算机)的WMI连接,表示管理可操作范围。创建WMI连接可以通过二种方法:
( 1 ) . 利用构造函数,当使用下面构造函数初始化ManagementScope 类实例,同时也就建立了WMI连接,具体如下:
public ManagementScope ( string path , ConnectionOptions options ) ; |
参数:
path ManagementScope的服务器和命名空间。
options 包含有关连接的选项的 ConnectionOptions。
使用构造函数是有风险的,因为如果不能根据提供的选项建立WMI连接,程序会程序异常,出现错误。
下列代码是利用此构造函数构建建立ManagementScope实例,并建立于远程计算机majinhu的WMI连接:
System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ; //设定用于WMI连接操作的用户名 Conn.Username = "WMI用户名"; //设定用户的口令 Conn.Password = "此用户名对应口令"; System.Management.ManagementScope Ms = new ManagementScope("\\majinhu\root\cimv2", Conn ) ; |
( 2 ) . 利用ManagementScope中提供的Connect方法:
ManagementScope中的成员是非常少的,最常用的方法和属性各一个:常用属性是Options,主要为WMI建立提供参数;常用方法是Connect,通过它可以建立于远程计算机的WMI连接。下列是利用Connect方法建立WMI连接的具体代码:
System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ; //设定用于WMI连接操作的用户名 Conn.Username = "WMI用户名"; //设定用户的口令 Conn.Password = "此用户名对应口令"; System.Management.ManagementScope Ms = new ManagementScope("\\majinhu\root\cimv2" ) ; Ms.Options = Conn ; Ms.Connect ( ) ; //建立WMI连接 |
·ObjectQuery类
ObjectQuery类或其派生类用于在ManagementObjectSearcher中指定查询。程序中一般采用查询字符串来构造ObjectQuery实例。其中的查询字符串是一种类似SQL语言的WQL语言。下面的ObjectQuery类构造函数中最常见的一种,具体语法如下:
public ObjectQuery ( string query ) ; |
参数:
query 查询的字符串
·ManagementObjectSearcher类
ManagementObjectSearcher主要是根据指定的查询检索WMI对象的集合。ManagementObjectSearcher组成成员也非常简单,其方法Get方法是非常重要的,ManagementObjectSearcher通过Get方法进行WMI查询,并把得到的结果集合。Get方法的返回值是一个ManagementObjectCollection实例,它包含匹配指定查询的对象。
表02是其ManagementObjectSearcher类的常用属性及其说明。
属性 | 说明 |
Options | 有关如何搜索对象的选项 |
Query | 在搜索器中调用的查询 |
Scope | 在其中查找对象的范围 |
·ManagementObjectCollection类
ManagementObjectCollection类非常简单,它主要表示 WMI 实例的不同集合其中包括命名空间、范围和查询观察程序等。创建ManagementObjectCollection类没有构造函数。
·ManagementObject类
ManagementObject类为单个管理对象或类。通过ManagementObject中的方法可以调用ManagementObject对应的对象,从而执行相应的操作。ManagementObject类是一个内容丰富的类,表03和表04分别是其常用的属性和方法。
属性 | 说明 |
ClassPath | 对象的类的路径。 |
Options | 检索对象时要使用的其他信息。 |
Path | 对象的 WMI 路径。 |
Scope | 此对象在其中驻留的范围。 |
方法 | 说明 |
Clone | 创建对象的一个副本。 |
CopyTo | 将对象复制到另一个位置。 |
Delete | 删除对象。 |
Get | 绑定到管理对象。 |
GetRelated | 获取与该对象(联系对象)相关的对象的集合。 |
GetRelationships | 获取该对象的关联的集合。 |
InvokeMethod | 调用对应的对象方法。 |
Put | 提交对对象所做的更改。 |
下面就结合二个具体的示例来介绍Visual C#中利用上述类,提供WMI掌握如何利用WMI编写网络应用程序,所使用的类库主要是使用了上面接收的这六个类。