WMI简化系统信息的获取

ZDNet软件频道 时间:2002-09-12 作者:BUILDER.COM |  我要评论()
本文关键词:
WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。
WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。WMI最早出现在Microsoft Windows 2000系统上,但它同样可以安装在Windows NT 4和Windows 9x计算机上。WMI是一种轻松获取系统信息的强大工具。

为什么使用WMI?

在很多情况下,你通过WMI得到的信息也可以通过其他方式从操作系统获得。比如说,假设你想知道计算机的名字,那么你可以在注册表里查找。如果你想知道C:驱空闲磁盘空间的大小,那么你不妨利用API函数。但是采用以上这些方法获取信息都是比较困难的方式,在用Visual Basic开发应用程序的情况下尤其如此。而WMI则能让你利用良好格式化的对象模型、SQL风格的查询获取系统信息,所需代码不但量比较少而且易于阅读。

使用WMI的三个例子

现在让我们考察以下三个课题:查询WMI、获取WMI信息和调用WMI方法。这里给出的示例都是用Visual Basic编写的。要了解更多的有关信息请参看MSDN上的WMI文档

查询WMI

查询WMI通常采用两种方式:获得整个WMI对象或者采用SQL风格的查询。此外,因为我们访问的是系统信息甚至可能是通过网络查询这些信息,所以在查询WMI的时候我们还必须提供安全信息。首先,我们需要在Visual Basic 中打开Project – References 并选中Microsoft WMI Scripting Library给WMI类型库增加一条引用。创建WMI类型库的引用之后我们可以如下所示使用WMI:
Dim oWMI as SWBEMObjectSet
Set oWMI =
GetObject("Winmgmts:").InstancesOf("Win32_LogicalDisk")


让我们分析下以上代码。首先,我们声明了一个SWBEMObjectSet类型的变量,这是标准的WMI集合类。接着,我们用一条比较长的语句对oWMI变量实例化。首先注意到的是对Winmgmts的引用。该对象提供者是WMI的标准引用。下一部分,也就是 则用我们要查询系统的安全性。按照以上定义,我们要采用运行该程序的用户的信任关系。WMI文档中定义了若干种安全级别和认证方法。InstancesOf是一种WMI方法,该方法获得被请求WMI对象的所有实例。最后,我们规定了想获取的对象Win32_LogicalDisk,该对象包含了计算机上所有磁盘驱动器的信息。执行以上语句之后,oWMI就拥有了一组WMI对象,它们带有各个磁盘驱动器的信息。接下来我们再考察如何获取这些信息。

刚才我提到可以用SQL风格的语句WQL(WMI查询语言)查询WMI。WQL是一种只读的SQL语言,支持有限的SQL词汇。如果我们用WQL查询WMI则可以用ExecQuery方法代替InstancesOf。为了演示WQL的工作原来,我们把以上的查询修改为只获取本地(非网络)磁盘驱动器的信息:
Set oWMI = GetObject("winmgmts: ").ExecQuery("select * from Win32_LogicalDisk where DriveType=3")


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134