window高级编程之WMI编程应用.ppt
《window高级编程之WMI编程应用.ppt》由会员分享,可在线阅读,更多相关《window高级编程之WMI编程应用.ppt(54页珍藏版)》请在三一办公上搜索。
1、,Windows系统编程实用教程,授课教师:职务:,第12章 WMI编程,课程描述WMI是Windows的核心组件,通过编写WMI脚本和应用程序可以获取计算机系统、软件和硬件信息,还可以对计算机进行管理,比如关机、重新启动计算机等。本章将介绍WMI编程当前相关技术。,本章知识点,12.1 WMI技术基础12.2 WMI编程方法,12.1 WMI技术基础,12.1.1 什么是WMI12.1.2 WMI体系结构12.1.3 WMI测试器12.1.4 WMI查询语言(WQL),12.1.1 什么是WMI,WMI(Windows Management Instrumentation,Windows管理
2、规范)是Windows的一项核心技术,它以CIMOM(Common Information Model Object Manager,公共信息模型对象管理器)为基础,是一个描述Windows操作系统构成单元的对象数据库。使用WMI技术的方式通常包括以下3种:通过WMI测试器工具对系统进行查询和管理。关于WMI测试器工具的具体使用方法将在12.1.4小节介绍。编写WMI脚本实现自动任务管理。通过C+程序接口、.NET类等方法编写应用程序获取和管理Windows操作系统中的对象信息。,12.1.2 WMI体系结构,1WMI脚本,WMI脚本是用户使用VBScript、Jscript语言编写的、用于访
3、问WMI的程序。,2WMI基础结构,中间层是WMI基础结构,它由4个主要组件构成,即WMI脚本库、公共信息模型对象管理器(Common Information Model Object Manager,CIMOM)、公共信息模型(Common Information Model,CIM)储存库和WMI提供程序。这些组件的具体情况将在稍后介绍。,3WMI脚本库,WMI脚本库为开发WMI脚本提供了一系列的对象,可以使用它们来访问和管理WMI托管资源。无论托管资源是计算机、事件日志、操作系统、进程、服务或者用户选择的其他资源,WMI脚本库中的对象都以相同的方式工作。WMI脚本库可以完成下面7种基本任
4、务。获取WMI托管资源的实例。读取WMI托管资源的属性。修改WMI托管资源的属性。调用WMI托管资源的方法。在WMI托管资源中创建一个新的实例。在WMI托管资源中删除一个实例。订阅对WMI托管资源进行创建、修改和删除的事件。,4公共信息模型,CIM(Common Information Model,公共信息模型)是一个与具体实现无关的、用于描述管理信息的概念性模型,它由核心模型、公共模型和扩展模型三层构成。核心模型是一系列类、连接和属性的集合,该对象组提供了所有管理域通用的基本信息模型;公共模型提供特定管理域的通用信息模型,这些特定的管理域包括系统、应用程序、网络和设备等;扩展模型代表通用模型
5、的特定技术扩展。CIM类通常表示动态资源。也就是说,资源的实例并不存储在CIM中,而是通过基于使用者请求的提供程序动态检索。类被分组到命名空间中,命名空间是表示一个特定的管理区域的类逻辑组。命名空间rootcimv2包括大部分通常与计算机和操作系统相关联的资源类。例如,Win32_LogicalMemoryConfiguration、Win32_Service和Win32_NTLogEvent等类都驻留在命名空间rootcimv2中,它们只是在CIM中定义的数百个类中的3个。,5公共信息模型对象管理器,CIMOM(Common Information Model Object Manager,
6、公共信息模型对象管理器)是一个描述操作系统构成单元的对象数据库,为MMC(Microsoft Management Console,微软管理控制台)和脚本程序提供了一个访问操作系统构成单元的公共接口。除此之外,CIMOM还向WMI提供下面的核心服务。提供注册:WMI利用CIMOM提供注册位置和功能信息。此信息存储在CIM储存库中。请求传送:CIMOM使用提供程序注册信息,将使用者请求传送到合适的提供程序。远程访问:使用者通过连接到远程系统上的CIMOM访问启用WMI的远程系统。一旦连接建立,使用者可以执行与在本地可以执行的操作相同的操作。安全性:在本地计算机或是远程计算机上,允许用户在连接到W
7、MI之前验证每个用户的访问标记,CIMOM控制对WMI托管资源的访问。WMI并不覆盖或阻止由操作系统提供的安全性。查询处理:允许使用者使用WMI查询语言(WMI Query Language,WQL)发出关于任何WMI托管资源的查询。CIMOM只在提供程序本身不支持查询操作的情况下执行查询计算。事件处理:允许使用者订阅表示对WMI托管资源更改的事件。例如,可以订阅一个事件,表明逻辑磁盘驱动器上的空间何时下降到可接受的阈值。CIMOM按一个指定的间隔轮询托管资源,并在满足订阅条件时生成一个事件通知。,6WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。提供程序代表用户应用程
8、序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。WMI提供程序通常以DLL文件的方式保存在%SystemRoot%system32wbem 目录下。Windows 2000、Windows XP和Windows Server 2003等操作系统都提供内置的WMI提供程序。,7托管资源,托管资源是任意逻辑或物理组件,通过使用WMI进行公开和管理。可以使用WMI管理的Windows资源包括计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统子系统、性能计数器、打印机、进程、注册表设置、安全性、服务、共享、SAM用户和组、Active Directory、W
9、indows安装程序、Windows驱动程序模式(WDM)设备驱动程序以及SNMP管理信息基数据(MIB)等。WMI托管资源通过WMI提供程序与WMI服务通讯。,12.1.3 WMI测试器,WMI测试器是能够与WMI基础结构进行交互的图形化工具,可以使用它来浏览CIM架构并检查托管资源类的定义。在命令窗口中执行wbemtest.exe,可以打开WMI测试器工具,如图12.4所示。此时,窗口中大部分按钮都是被禁用的,这说明此时还没有连接到WMI。,“连接”对话框,单击“连接”按钮,打开“连接”对话框,如图12.3所示。,连接后的WMI测试器,查看rootcimv2命名空间下的所有CIM类,单击“
10、枚举类别”按钮,打开“超类别信息”对话框,如图12.7所示。在该对话框中可以查看到指定名称空间中的类信息。如果要查看名称空间rootcimv2中包含的所有CIM类,则不输入超类别名称,然后选择“递归”单选按钮,单击“确定”按钮,如图12.8所示。,CIM类的对象编辑器,双击一个类,可以打开对象编辑器,查看该类的限定符、属性和方法,如图12.9所示。,执行下面的WQL语句,在WMI测试器的主窗口中单击“查询”按钮,可以打开“查询”对话框,如图12.10所示。执行下面的WQL语句可以查询类Win32_Process中的数据。SELECT*FROM Win32_Process,WQL语句的查询结果,
11、12.1.4 WMI查询语言(WQL),WQL(WMI Query Language,WMI查询语言)可以使用SQL语句的方式来访问WMI实例,查询指定类的数据。WMI查询语句的格式如下:SELECT FROM WHERE 关于WMI中常用类的具体情况将在附录2中结合实例介绍。,12.2 WMI编程方法,12.2.1 COM和接口12.2.2 为WMI应用程序初始化COM环境12.2.3 获取到WMI的IWbemLocator对象12.2.4 连接到指定的计算机12.2.5 设置WMI连接的安全属性12.2.6 执行查询操作12.2.7 执行CIM类的方法,12.2.1 COM和接口,1组件对
12、象和接口2标识符(GUID)3接口派生4创建COM对象5销毁对象,1组件对象和接口,组件对象和接口是COM的核心要素,它们都是基于面向对象程序设计思想的。组件对象与C+对象相似,都是由属性和方法组成,是一个实体对象。可以实现接口中定义的操作。接口是一种特殊的C+类,其中只定义了一些虚拟成员函数,没有成员变量,也没有非虚拟的成员函数。所谓虚拟函数是指只定义了函数的原型,但没有具体实现代码的函数。接口不用于实现具体的功能,它可以为一组类定义它们的共性操作。,【例12.1】,以接口IUnknown为例,来说明接口的基本概念。假定COM对象IUnknown的声明代码如下:class IUnknownp
13、ublic:virtual long _ _stdcall QueryInterface(const GUID,2标识符(GUID),在COM中,使用标识符(GUID)来唯一标识一个COM对象、接口或者其他COM元素。在C+中,GUID表现为结构体的形式,代码如下:typedef struct _GUID DWORD Data1;WORD Data2;WORD Data3;BYTE Data48;GUID;参数说明如下:Data1,指定8位16进制数。Data2,指定第1组4位16进制数。Data3,指定第2组4位16进制数。Data4,8个元素的字节数组。前2个字节包含第3组4位16进制数,
14、其余6个字节包含最后12位16进制数。,3接口派生,每个COM对象都必须从接口IUnknown派生,因此每个COM对象都会继承接口IUnknown的QueryInterface()、AddRef()和Release()函数。下面是接口IWbemLocator的定义。interface IWbemLocator:IUnknown HRESULT ConnectServer(BSTR strNetworkResource,BSTR strUser,BSTR strPassword,BSTR strLocale,long lSecurityFlags,BSTR strAuthority,IWbemC
15、ontext*pCtx,IWbemServices*ppNameSpace);使用IWbemLocator接口可以获取指定计算机上WMI的IWbemServices接口的初始命名空间,因此IWbemLocator对象又被称为定位器对象。可以通过IWbemServices接口访问WMI服务。IWbemLocator接口包含4个函数,即QueryInterface()、AddRef()、Release()和ConnectServer()。,4创建COM对象,HRESULT CoCreateInstance(_in REFCLSID rclsid,_in LPUNKNOWN pUnkOuter,_i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- window 高级 编程 WMI 应用
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6523763.html