window高级编程之wmi编程应用

上传人:tian****1990 文档编号:72546347 上传时间:2019-01-23 格式:PPT 页数:54 大小:446.50KB
返回 下载 相关 举报
window高级编程之wmi编程应用_第1页
第1页 / 共54页
window高级编程之wmi编程应用_第2页
第2页 / 共54页
window高级编程之wmi编程应用_第3页
第3页 / 共54页
window高级编程之wmi编程应用_第4页
第4页 / 共54页
window高级编程之wmi编程应用_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《window高级编程之wmi编程应用》由会员分享,可在线阅读,更多相关《window高级编程之wmi编程应用(54页珍藏版)》请在金锄头文库上搜索。

1、,Windows系统编程实用教程,授课教师: 职务:,第12章 WMI编程,课程描述 WMI是Windows的核心组件,通过编写WMI脚本和应用程序可以获取计算机系统、软件和硬件信息,还可以对计算机进行管理,比如关机、重新启动计算机等。本章将介绍WMI编程当前相关技术。,本章知识点,12.1 WMI技术基础 12.2 WMI编程方法,12.1 WMI技术基础,12.1.1 什么是WMI 12.1.2 WMI体系结构 12.1.3 WMI测试器 12.1.4 WMI查询语言(WQL),12.1.1 什么是WMI,WMI(Windows Management Instrumentation,Win

2、dows管理规范)是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、Jscrip

3、t语言编写的、用于访问WMI的程序。,2WMI基础结构,中间层是WMI基础结构,它由4个主要组件构成,即WMI脚本库、公共信息模型对象管理器(Common Information Model Object Manager,CIMOM)、公共信息模型(Common Information Model,CIM)储存库和WMI提供程序。这些组件的具体情况将在稍后介绍。,3WMI脚本库,WMI脚本库为开发WMI脚本提供了一系列的对象,可以使用它们来访问和管理WMI托管资源。无论托管资源是计算机、事件日志、操作系统、进程、服务或者用户选择的其他资源,WMI脚本库中的对象都以相同的方式工作。 WMI脚本库

4、可以完成下面7种基本任务。 获取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 Mo

6、del Object Manager,公共信息模型对象管理器)是一个描述操作系统构成单元的对象数据库,为MMC(Microsoft Management Console,微软管理控制台)和脚本程序提供了一个访问操作系统构成单元的公共接口。除此之外,CIMOM还向WMI提供下面的核心服务。 提供注册:WMI利用CIMOM提供注册位置和功能信息。此信息存储在CIM储存库中。 请求传送:CIMOM使用提供程序注册信息,将使用者请求传送到合适的提供程序。 远程访问:使用者通过连接到远程系统上的CIMOM访问启用WMI的远程系统。一旦连接建立,使用者可以执行与在本地可以执行的操作相同的操作。 安全性:在

7、本地计算机或是远程计算机上,允许用户在连接到WMI之前验证每个用户的访问标记,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资源包括计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统子系统、性能计数器、打印机、进程、注册表设置、安全性、服务、共享、S

9、AM用户和组、Active Directory、Windows安装程序、Windows驱动程序模式(WDM)设备驱动程序以及SNMP管理信息基数据(MIB)等。WMI托管资源通过WMI提供程序与WMI服务通讯。,12.1.3 WMI测试器,WMI测试器是能够与WMI基础结构进行交互的图形化工具,可以使用它来浏览CIM架构并检查托管资源类的定义。 在命令窗口中执行wbemtest.exe,可以打开WMI测试器工具,如图12.4所示。此时,窗口中大部分按钮都是被禁用的,这说明此时还没有连接到WMI。,“连接”对话框,单击“连接”按钮,打开“连接”对话框,如图12.3所示。,连接后的WMI测试器,查

10、看rootcimv2命名空间下的所有CIM类,单击“枚举类别”按钮,打开“超类别信息”对话框,如图12.7所示。在该对话框中可以查看到指定名称空间中的类信息。如果要查看名称空间rootcimv2中包含的所有CIM类,则不输入超类别名称,然后选择“递归”单选按钮,单击“确定”按钮,如图12.8所示。,CIM类的对象编辑器,双击一个类,可以打开对象编辑器,查看该类的限定符、属性和方法,如图12.9所示。,执行下面的WQL语句,在WMI测试器的主窗口中单击“查询”按钮,可以打开“查询”对话框,如图12.10所示。 执行下面的WQL语句可以查询类Win32_Process中的数据。 SELECT *

11、FROM Win32_Process,WQL语句的查询结果,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、作 12.2.7 执行CIM类的方法,12.2.1 COM和接口,1组件对象和接口 2标识符(GUID) 3接口派生 4创建COM对象 5销毁对象,1组件对象和接口,组件对象和接口是COM的核心要素,它们都是基于面向对象程序设计思想的。 组件对象与C+对象相似,都是由属性和方法组成,是一个实体对象。可以实现接口中定义的操作。 接口是一种特殊的C+类,其中只定义了一些虚拟成员函数,没有成员变量,也没有非虚拟的成员函数。所谓虚拟函数是指只定义了函数的原型,但没有具体实现代码的函数。接口不用于实现具体的功能,它可以为一组类定义它们的共性操作。,【例12.1】,以接口IUnknown为例,来说明接口的

13、基本概念。假定COM对象IUnknown的声明代码如下: class IUnknown public: 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进制数

14、。 Data3,指定第2组4位16进制数。 Data4,8个元素的字节数组。前2个字节包含第3组4位16进制数,其余6个字节包含最后12位16进制数。,3接口派生,每个COM对象都必须从接口IUnknown派生,因此每个COM对象都会继承接口IUnknown的QueryInterface()、AddRef()和Release()函数。下面是接口IWbemLocator的定义。 interface IWbemLocator : IUnknown HRESULT ConnectServer(BSTR strNetworkResource, BSTR strUser, BSTR strPasswor

15、d, BSTR strLocale, long lSecurityFlags, BSTR strAuthority, IWbemContext* pCtx, IWbemServices* ppNameSpace); ; 使用IWbemLocator接口可以获取指定计算机上WMI的IWbemServices接口的初始命名空间,因此IWbemLocator对象又被称为定位器对象。可以通过IWbemServices接口访问WMI服务。 IWbemLocator接口包含4个函数,即QueryInterface()、AddRef()、Release()和ConnectServer()。,4创建COM对象

16、,HRESULT CoCreateInstance( _in REFCLSID rclsid, _in LPUNKNOWN pUnkOuter, _in DWORD dwClsContext, _in REFIID riid, _out LPVOID *ppv );,【例12.3】,下面是创建IWbemLocator对象的示例代码。 IWbemLocator* locator; HRESULT hr = CoCreateInstance(CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (PVOID*) ,5销毁对象,每个COM对象都有一个参考计数,当不再使用COM对象时,应该调用Release()函数减少其参考计数值。当计数值为0时,系统将删除该对象。 【例12.4】下面是创建和销毁IWbemLocator对象的示例代码。 IWbemLocator* locator; HRESULT hr =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号