WMI中的SQL,WQL简明教程系列5:工具,命名空间,路径

mitchellchu:wmi wql教程  的WQL简明教程系列的前四篇文章[1,2,3,4]完全介绍WQL的各个基本知识,相信对于WMI的WQL的开发来说,这些知识已经足够我们步入WMI的世界,并能准确的驾驭WQL中的各个使用细节了。这些掌控的所有细节,自然只有在实战中进行发挥,才能体现我们学习WMI的WQL的作用。在实际中使用,我们还需要一些辅助的工具来进行开发。WMI的基本知识就像是武功修练中的内功心法,我们练得非常的醇厚,自然可以徒手独步武林,但在我们还没有练到随心所欲,化腐朽为神奇的境界,选择个武器共创天地也不失是个好主意,同样的道理,在全然彻底的了解WMI中的方方面面的时候,工具神码都是浮云,而在我们未能做到这个之前,选择一些工具来帮助我们就显得非常重要了。

  由于MitchellChu也是初涉WMI不久,在WMI中的可能涉及不够全面,因此如果有不正确的地方,请各位不吝赐教。下面是用过的一些工具,以表格方式放出:

工具名称

描述

wbemtest.exe

系统自带的WMI测试器工具,你可以使用这个工具连接到相应的命名空间下进行查询等操作。

dcomcnfg.exe

该功能并非WMI的工具,而是通过该工具能够启动WMI服务(winmgmt)

wmimgmt.msc

wmi配置程序

wmic.exe

wmi命令行工具

WMITools.exe

非系统自带工具,是官方提供的WMI 工具集,安装后,能够提供WMI CIM Studio ,WMI Event Registration,WMI Event Viewer,WMI Object Browser等实用工具。该工具应该说是WMI开发中不可或缺的WMI工具。下载地址为:WMITools.exe或下载页:download

  上面这些工具只能够让我们选择和查看相应的WMI信息,如果需要用程序操作,在系统层面,WSH(Windows Scripts Host)就显得很重要了,WSH提供脚本引擎,一个是wscript.exe,另外一个是cscript.exe,两者都是能够针对.wsh,.vbs,.js进行解析,前者是windows窗口中运行,后者则是在命令行中运行。嗯嗯,偏题了,这是WMI的主题,那么更多的信息可以参见WSH网络上的解释。要说明的意思是,如果你有要操作的,可以用VBSCRIPT或者JScript来编写脚本,并在WSH中使用即可。当然,你还可以在其他程序中使用WMI,比如C++,.NET中,均可用编程的方式使用WQL来调用WMI中的CIM类或实例。

关于WMI命名空间:

用于对相同环境中存在的类进行分组,也用于加强安全限制。当请求连接到一个命名空间时会检查用户的权限,这决定命名空间级别的权限。命名空间是一个层次结构,类似文件系统中文件夹的层次结构。

WMI中常见的命名空间:

命名空间

描述

root

所有命名空间均在这个命名空间下,此命名空间只包含WMI系统类,这些类也会在其它命名空间中出现。(WMI系统类是在名称前面有两个下划线("_")组成,可以非常方便的查询)

root\Default

与windows注册表操作有关的主机类 ,读取、写入、枚举、监视、创建、删除注册表项和值。

root\Security

用于与windows安全有关的类

root\CIMV2

包含从CIM Schema派生的类,它们代表着我们最常工作的win32环境。比如:获取系统信息,管理 Windows 事件日志等

root\MicrosoftIISv2

 IIS WMI 提供程序。 .NET下管理 IIS的API在Microsoft.Web.Administration这个命名空间下。

root\RSOP 策略的结果集
root\Policy 组策略
root\directory\ldap Active Directory提供程序

有些朋友在网上找获取硬盘序列号的例子,一找说用WMI可以获取,可是代码中却要连接到root\CIMV2这个命名空间下,就非常不解,怎么要连这个命名空间呢?而好多写代码的也一知半解,不能给出完整的说明。其实这是因为微软将所有涉及到Win32系统的信息都集成在CIMV2的原因。

关于

千言万语不及代码一行:

;========================================
; http://blog.useasp.net/
; MitchellChu's Blog
; WMI tutorial
; WMI路径说明
;========================================
\\ComputerName\root\CIMV2:Win32_Account
--------------=----=-----=--------------
|     |       |          |       |- WMI中类名称(区分大小写)
|     |       |          |
|     |       |          |- 命名空间和WMI类名称的分隔符
|     |       |
|     |       |- 命名空间分隔符(主机名称也看作是命名空间理解跟方便)
|     |
|     |- 主机名称,远程的填写名称,本地可以简单的以点(".")代替
|
|- 主机名称前导符,固定用双斜杠表示,如果是本地,可以省略前导符和主机名称

\\ComputerName\ 这个如果是本地可以省略哦...

看明白了吧,\\.\root\CIMV2:Win32_Account这个路径代表的就是Win32_Account类的路径,当然,本地也可以直接root\CIMV2:Win32_Account这样了。

WMI中WQL就说的差不多了,毕竟是简明的基础教程嘛~~ 剩下的要靠自己参悟了哦,欢迎前来交流学习心得。Enjoy it.

Monday, June 17, 2013 | .NET技术 其他技术 编程语言

文章评论

No comments posted yet.

发表评论

Please add 4 and 8 and type the answer here:

关于博主

  一枚成分复杂的网络IT分子,常年游弋于电子商务,属于互联网行业分类中的杂牌军。当前正在待业中...