由于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命名空间 用于对相同环境中存在的类进行分组,也用于加强安全限制。当请求连接到一个命名空间时会检查用户的权限,这决定命名空间级别的权限。命名空间是一个层次结构,类似文件系统中文件夹的层次结构。
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的原因。
关于 WMI对象的路径 :
千言万语不及代码一行:
;========================================
; 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.