在WMI 体系结构中我们最需要关心的就是WMI提供程序,WMI提供程序在WMI和托管资源之间扮演着中间方的角色。提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。
1.Active Directory提供程序链接库文件:dsprov.dll 命名空间:root\directory\ldap 作用:将Active Directory 对象映射到 WMI。2.事件日志提供程序链接库文件:ntevt.dll 命名空间:root\cimv2 作用:管理 Windows 事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。3.注册表提供程序链接库文件:stdprov.dll 命名空间:root\default 作用:读取、写入、枚举、监视、创建、删除注册表项和值。4.Win32 提供程序链接库文件:cimwin32.dll 命名空间:root\cimv2 作用:提供关于计算机、磁盘、外围设备、文件、文件夹、文件系统、网络组件、操作系统、打印机、进程、安全性、服务、共享、SAM 用户及组,以及更多资源的信息。5.Windows 安装程序提供程序链接库文件:msiprov.dll 命名空间:root\cimv2 作用:提供对已安装软件信息的访问。从上面可以看出在WMI中类(即内置提供程序,微软发布的服务软件一般都有对应的这些提供程序)被分组到命名空间中,命名空间可以看成是一个组。比如,命名空间 root\cimv2 包括大部分表示通常与计算机和操作系统相关联的资源的类。在使用类的时候要说明类所在的命名空间。类由属性和方法构成。这是可视化编程中的两个重要的概念。属性描述的是对象的状态,方法是对象可以执行的操作。WQL
WQL就是WMI中的查询语言,WQL的全称是WMI Query Language,简称为WQL,翻译成中文好像可以成为Windows管理规范查询语言。熟悉SQL语言的朋友会感觉它和SQL非常相似。
WQL其实非常简单,它有如下特点:
1、每个WQL语句必须以SELECT开始;2、SELECT后跟你需要查询的属性名(我刚才对应SQL将其称之为字段名了),也可以像SQL一样,以*表示返回所有属性值;3、FROM关键字;4、你要查询的类的名字;5、另外,如果你想精确查询结果还可以加上WHERE条件从句。比如某个类有Enable属性,你可以在查询的时候加上WHERE ENABLE=true,条件可以添加and or等关系操作。如以下的都是正确的WQL语句:
Select * From Win32_LogicalDisk where drivetype=3 ’‘’‘查询所有硬盘分区
SELECT * FROM Win32_share ’‘查询所有共享目录SELECT * FROM Win32_NetworkAdapterConfiguration WHERE DHCPEnabled=TRUESELECT Description FROM Win32_Account WHERE Name='Administrator'SELECT Freespace,DeviceID FROM Win32_LogicalDisk在WinXP和Win2003中有一个自带的WQL测试工具,叫wbemtest.exe[windows的system32\wbem目录下],这个工具可以查看机器上的安装情况和WMI接口的参数等信息。
MSDN上下载的WMITools.exe工具组也很有用,可以参考.
*****************************************************************************