Windows系统编程---第12章.ppt_第1页
Windows系统编程---第12章.ppt_第2页
Windows系统编程---第12章.ppt_第3页
Windows系统编程---第12章.ppt_第4页
Windows系统编程---第12章.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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查询语言是什么WMI测试器工具的具体使用方法在12.1.4节中介绍。编写WMI脚本以实现自动任务管理。c程序界面,方法创作应用程序(如NET类)在Windo

2、ws操作系统中导入和管理对象信息。12.1.2 WMI体系结构、1WMI脚本和WMI脚本是用户使用VBScript、Jscript语言编写的WMI访问程序。2WMI基础架构、中间层包括WMI脚本库、通用信息模型对象管理器(CIMOM)和通用信息模型对象管理器(com)、3WMI脚本库、WMI脚本库提供了一组用于开发WMI脚本的对象,您可以使用这些对象访问和管理WMI管理资源。无论管理的资源是计算机、事件日志、操作系统、进程、服务还是用户选择的其他资源,WMI脚本库中的对象的工作方式都相同。WMI脚本库可以执行七项基本任务:获取WMI管理资源的实例。读取WMI管理资源的属性。修改WMI管理资源的

3、属性。方法以调用WMI管理的资源。在WMI管理资源中创建新实例。从WMI管理资源中删除实例。预订用于创建、修改和删除WMI管理资源的事件。4公共信息模型、公用信息模型(CIM)是概念模型,用于描述与核心模型、公共模型和扩展模型三层的具体实施无关的管理信息。核心模型是一系列类、连接和属性的集合,提供所有管理域通用的基本信息模型。公共模型提供了特定管理域(系统、应用程序、网络、设备等)的通用信息模型。扩展模型表示通用模型的特定技术扩展。CIM类通常表示动态资源。也就是说,资源的实例不是存储在CIM中,而是通过基于用户请求的提供程序动态检索。类按命名空间分组,命名空间是表示特定管理领域的类逻辑组。命

4、名空间rootcimv2包含大多数通常与计算机和操作系统相关联的资源类。例如,Win32 _ logicalmemoryconfiguration、Win32_Service和Win32_NTLogEvent等类都位于命名空间rootCIMv2中,它们只是CIM中定义的数百个类中的三个。5公用信息模型对象提供注册:WMI使用CIMOM提供注册位置和功能信息。此信息存储在CIM存储库中。转发请求:CIMOM使用供应商注册信息将用户请求转发给相应的供应商。远程访问:用户连接到远程系统上的CIMOM,访问支持WMI的远程系统。建立连接后,用户可以执行本地所能执行的相同操作。安全性:在本地或远程计算机

5、上,用户连接到WMI之前,可以检查每个用户的访问标记,CIMOM控制对WMI管理资源的访问。WMI不会复盖或阻止操作系统提供的安全性。处理查询:允许用户使用WMI查询语言(WQL)对所有WMI管理资源执行查询。仅当提供程序本身不支持查询操作时,CIMOM才会执行查询计算。处理事件:用户可以预订表示对WMI管理资源所做更改的事件。例如,您可以订阅指示逻辑磁盘驱动器上的空间何时降到可接受阈值的事件。CIMOM按指定时间间隔轮询受管理的资源,并在满足订阅条件时生成事件通知。6WMI提供程序和WMI提供程序在WMI和管理资源之间起到中间作用。提供程序代表用户应用程序和脚本从WMI管理资源请求信息,并将

6、命令发送到WMI管理资源。WMI提供程序通常作为DLL文件保存在%SystemRoot%system32wbem目录中。WMI提供程序在Windows 2000、Windows XP和Windows Server 2003等操作系统上提供。7管理资源、管理资源是使用WMI公开和管理的逻辑或物理组件。可以使用WMI管理的Windows资源包括计算机系统、磁盘、外围设备、事件日志、文件、文件夹、文件系统、网络组件、操作系统子系统、性能计数器、打印机、进程、注册表设置、安全性、服务、孔刘、SAS,12.1.3 WMI测试器和WMI测试器是用于与WMI基础结构交互的图形工具,可用于浏览CIM模式和验证

7、受管理资源类的定义。在命令窗口中运行wbemtest.exe将打开WMI测试器工具,如图12.4所示。此时,窗口中的大多数按钮被禁用,表示您当前没有连接到WMI。在连接对话框中,单击连接按钮以打开连接对话框,如图12.3所示。查看关联的WMI测试器、rootcimv2命名空间下的所有CIM类,然后单击“类别枚举”按钮以打开“父类别信息”对话框,如图12.7所示。使用此对话框可以查看指定名称空间的类信息。要查看命名空间rootCIMv2中包含的所有CIM类,请选择重复单选按钮,而不输入父类别名称,然后单击确定按钮,如图12.8所示。CIM类的对象编辑器,双击类以打开对象编辑器,您可以查看类的限定

8、符、属性和方法,如图12.9中所示。运行以下WQL语句,然后单击WMI测试器主窗口中的“查询”按钮以打开“查询”对话框,如图12.10所示:要查询类Win32_Process中的数据,请运行以下WQL语句:SELECT * FROM Win32_Process、wql叙述句的查询结果、12.1.4 wmi查询语言(WMI)、WMI查询语言(WQL)、WMI查询语言WMI查询叙述句的格式如下:WMI中常用类的选择从WHERE的具体内容将在附录2中与示例一起讨论。12 . 2 . 1 WMI编程方法,初始化12.2.1 COM和接口12.2.2 WMI应用程序的COM环境导入12.2.3 WMI的

9、IWbemLocator对象12.2.4连接到指定计算机12.2连接到12.2.1 COM和接口,1组件对象和接口2标识符(GUID) 3接口派生4与c对象类似,组件对象由属性和方法组成,并且是实体对象。您可以实施界面中定义的操作。接口是特殊的C类,它仅定义了一些虚拟成员函数,没有成员变量,也没有非虚拟成员函数。虚拟函数是只定义函数原型但没有特定实现代码的函数。接口不用于实现特定功能,可以为一组类定义常见任务。示例12.1,以接口IUnknown为例,说明接口的基本概念。COM对象IUnknown的声明代码为class I unknown public : virtual long _ _ S

10、TD call query interface(constGUID,2标识符(guid);在c中,GUID以结构形式显示。代码如下:typedef struct _ GUID DWORD Data1WORD Data2WORD Data3BYTE Data48GUID参数说明如下:指定Data1、8位十六进制数。Data2,指定组1的4位十六进制数。指定Data3、组2的4位十六进制数。数据4,8元素字节数组的前两个字节包含组3 4位十六进制数,其馀6个字节包含最后一个12位十六进制数。3派生接口,并且每个COM对象必须派生自接口IUnknown,因此每个COM对象继承接口IUnknown的Q

11、ueryInterface()、AddRef()和Release()函数。以下是介面IWbemLocator的定义:interface iwbem locator : I unknown hresult connect server(bstr strnetworkresource、bstr struser、bstr strpassword、bstr。IWbemLocator对象有时称为定位器对象,因为您可以使用IWbemLocator界面获取指定计算机上WMI的IWbemServices接口的初始命名空间。可以通过IWbemServices界面访问WMI服务。IWbemLocator接口包含四

12、个函数:QueryInterface()、AddRef()、Release()和ConnectServer()。4创建COM对象,hresult cocreate instance(_ in ref clsid rclsid,_ _ in LP unknown punk outer,_ _ in dword dwclscoodsIWbemLocator * locatorhresulthr=cocreate instance(cl sid _ WBEM locator,null,clsctx _ in proc _ server,iid _ iwbemlocator)示例12.4以下是创建和删

13、除IWbemLocator对象的示例代码:IWbemLocator * locatorhresulthr=cocreate instance(cl sid _ WBEM locator,null,clsctx _ in proc _ server,iid _ iwbemlocator)CoInitializeEx()函数的原型是hresult CoInitializeEx(LP void PV reserved,dword dwco init)。示例12.5以下是使用CoInitializeEx()函数初始化COM库的示例代码:HRESULT HRHr=coinitializeex (0,coinit _ multithreaded);if(failed(HR)cout failed to initialize com library . error code=0x hex HR endl;Return HR,2如果需要初始化COM的安全级别并修改默认安全设置,可以调用CoInit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论