2024年3月14日发(作者:)

维普资讯

第24卷第1期 

长江工程职业技术学院学报 

Vo1.24 NO.1 

2007年3月 

ou

rn

l of

Changjiang Engineering Vocational College 

Mar.2007 

在NET Framework中如何使用WMI 

陈希球 

(长江工程职业技术学院,湖北赤壁437302) 

摘要:介绍了w ̄Ⅱ的体系结构,讨论了在NET Framework开发环境中如何使用w ̄Ⅱ的类与对象来管理操作系 

统的信息,并给出了编程实例。 

关键词:WMI;CIM;WQL 

中图分类号:TP393.02 文献标识码:B 文章编号:1673—0496(2007)0l一0028—02 

How to Use wMI in Net Framework 

CHEN Xi—qiu 

(Changjiang Engineering Vocational CoUege,Chibi 437302,China) 

Abstract:The structure of WMI system and how to manage information of the operatnig system by category and 

object of WMI ni Net Framework are introduced.Some practical examples are prodded too. 

Key words:WMI;CIM;WQL 

啪(Windows Management Insturmentation)是 

WINDOWS系统中一种可伸缩的系统管理结构,它采用一 

个统一的、基于标准的、可扩展的面向对象接口来管理系 

数据库应用程序I VB、VC、C井等 Script等应用程序如 

统。WM/提供了与系统管理信息和基础WM/API交互的标 

应用程序 VBScripr、JSript 

准方法,它扩展成为Windows ̄动程序模型,可从设备驱动 

程序及核心组件中捕获装置数据和事件,允许改变管理信 

息以使其他管理信息可以对其进行识别、整合、比较和联 

: I j▲ 

f ODBC f l WSH l 

系,这些信息可以同时发送给本地或远程管理应用程序。 

JI  ▲ 

在实际编程工作中,特别是系统级方面的应用,程序开发 

I 

人员运用WMI API来访问和操作系统管理信息,使看似不 

1『  1 『 ◆ .,一——、. 

可能的事情变得异常的方便和高效。 

中间层 l c蹦0bi。ct M柚a

▲ 

g盯(CIMOM) J・_卜... 、—.

CIM 

.—一/ 

1 WM/体系结构 

T 资 

WM/是Microso躔于web的企业管理(WBEM)的实现, 

下层 1wM【资料提供者 i

同时也是一种基于标准的系统管理介面。该结构支持公共 

▲ 

WMIProvid盯)l 

料 

\ :/ 

摩 

信息模型CIM(Common Information Mode)语法,管理 

● 

对象格式(MOF)以及公共的编程接口。从编程人员的角 

l 被管理系统 、资料来源) J 

度看,WMI由三层构成,最上层是WM/资料请求者(WM/ 

图1 M、vI体系结构图 

Data Consumer),中间层为CIM对象管理(aM Object 

(Windows Script Host)检索一个托管资源类型,将脚本 

Manager),最下层为WM/资料提供者(WM/ProHder), 

嵌入到Web页面可构成功能强大的web应用程序。结构中的 

其结构如图l所示。 

中问层CIMOM是WM/将来自不同来源的配置和管理信息能 

在WMI结构图中,各种数据库应用程序可通过ODBC 

够用一种架构统一地表示,而CIM资料库就是针对WM/架 

来连接cⅡ 0M进行管理信息的存取,而 缸脚本对象库则 

构的。WM/CIM构建构成计算机的硬件、操作系统和软件 

提供了一组应用对象集,WM/脚本对象库中的这些对象为 

的模型。CIM是WM/的数据模型。虽然CIM资料库能够存 

WM/基础结构提供一个统一的模型,开发人员使用WSH 

储一些数据,但是它的主要目的是构建管理环境的模型。 

CIM不是为存储它所定义的大量管理信息而设计的,相 

收稿日期:200岳—D 6 

反,大部分数据是根据需要动态地从WM/提供程序检索 

的。wⅦ操作数据(例如,命名空问信息、提供程序注册 

作者简介:陈希球(1962一 ),男,湖北崇阳人,副教 

信息、托管资源类定义和永久事件订阅)存储于CIM资料 

授,大学,主要从事计算机教学与管理工作。 

库中,c 使用“类”来创建数据模型,CIM资料库被划分 

28一 

维普资讯

陈希球’ 在NETFramework中如何使用w加 

成多个命名空问,每个命名空间包含一个或多个类组,这 

表3 ManagementObject类常用方法及其说明 

些“类”分为系统类 核心类、公共类和扩展类。其类类 

方法 说明 

型可以是抽象、静态和动态的。开发人员可用VB、Vc十+、 

c样等工具通过WMI API来操作这些“类”,从而实现对系 

Clone 创建对象和—个副本 

统资源信息的管理。 

CopyTo 将对象复制到另—个位置 

Delete 删除对象 

2 WMI类及其编程对象 

eGt 绑定到管理对象 

Net FrameWork对WMI提供了全面的支持,在命名空 

间System.Management中提供了大量用于处理和WM/相关 

eGtRelated 艨 艨 

的类、接口和枚举。WMI类规类情况如表1,在编程时可用 

下列对象对这些类进行操作,ConnectinoOptions对象为建立 

eGtRelafinoship获取该对象关联的集合 

WMI连接提供所需的所有设置,如果是利用WMI技术对远 

InvokeMethod 调用对应的对象方法 

程计算机进行操作,则首先要进行WM/连接,Manage— 

Put 提交对对象所做的更改 

mentScope对象提供远程计算机WM/用户名和口令; 

ObjectQuea'y ̄象用于在ManagementObjectSearcher中指定查 

并操作远程主机的硬盘;实例2中使用TObjectQuery和 

ManagernentObjceSearcher对象,实现了本地系统中共享资 

询,程序中一般采用查询字符串来构造ObjectQuery实例, 

源的枚举。 

其中的查询字符串是一种类似SQL语言的WQL语言;而 

(1)实例1 

ManagementObjectSearcher主要根据指定的查询通过Get方法 

clsas Sample

_

ConnectionOpdons 

来检索WMI对象的集合,ManagementObjectSearcherY/:把结 

f public static int Main(string[]args)f 

果返回一个ManagementObjectCoUectino实例,它包含匹配 

ConnectinoOptinos options--new ConnectinoOpdons(); 

指定查询的对象。 

options.Username=UserName; 

表1 WMI类的规类 

options.Password=SecurelyStoredPassword; 

WMI类名 说明 

ManagementScope scope=new ManagementScope( 

主要提供了操作系统硬件、软件及系统本 

Illl servernamell roottlcimv2 opdons 

Win32 Classes 身的一些操作信息,存储在名字空间\ 00t 

try{ 

\cimv2上 

scope.Connect(); 

WMI Registry Classes用于操作系统注册表 

Managementobjectdisk=newManagementObject( 

scope, 

WMI System Classes 

new ManagementPath Cwin 32 logicaldisk=℃: ’), 

IPMI Classes 箨紫 鑫荐理接吠’提 M 法操 

nul1); 

disk.eGt(); 

Monitor Display 该类是定义在root\wmi名字空间,用于w 

} 

Classes DM提供程序对显示数据支持 

catch(Exceptione){ 

MSFT Classes 用于远程事件处理 

Console.WriteLine("Failed to connect:”+e.Message); 

CIM Clsasse 用户通过继承CIM类来编写自己的类 

} 

return 0: 

兰 las0nsu er 用于wMI事件监视 

ses 

} 

MSMCA Classes 用于系统事件的命名 

} 

(2)实例2 

ManagementObject类为单个管理对象,通过Manageme- 

class share

reso 

_

ntObject中的方法可以调用ManagementObjct对应的对象, 

{ 

从而执行相应的操作。ManagementObject是一个内容丰富 

public static int Main(string[】args) 

的对象,表2和表3分别是其常用的属性和方法,通过调用 

{ 

这些方法实现对系统的操作会取得事半功倍的效果。 

ObjcetQueay objcetQueay=new ObjectQueay Cselcet 

表2 ManagementObject常用属性及其说明 

rfomWin 32

_

Share”); 

属性 说 明 

ManagementObjectSearcher searcher=new 

ManagementObjectSearcher(objcetQuery); 

C1assPath 

对象的类的路径 

froeach(Managementobject sharein searcher.Get()) 

Options 

检索对象时要使用的其他信息 

{ 

Path 

对象的WMI路径 

Console.WriteLine(”Share=”+share[ttName' 】); 

Scope 

} 

此对象在其中驻留的范围 

Console.ReadLine(); 

returen 0: 

3 WMI编程实例 

} 

为了说明WMI的使用,笔者给出两个应用实例。实例l 

l 

中使用TConnecfinoOpfions对象,实现与远程主机的联接, 

29—