当前位置: 代码迷 >> Office >> 初学WMI,关于WMI的应用例程
  详细解决方案

初学WMI,关于WMI的应用例程

热度:7208   发布时间:2013-02-26 00:00:00.0
初学WMI,在线等关于WMI的应用例程
如题,那位大侠能够提供WMI的应用例程,最好有详细说明

------解决方案--------------------------------------------------------
VB code
看一个使用WMI的例子,该例子列举本机上的所有系统服务的名字、状态、启动方式、登录身份、描述、路径。(就是用VBA做一个和控制面板里的服务组件一样的服务管理器)例1:打开VBA编辑器,单击“工具”—“引用“ ,添加“Microsoft WMI Scripting V1.2 Library”,在Sheet1中添加CommandButton1和如下代码:Option ExplicitDim WMILocator As New SWbemLocator '定义一个指向WMI的指针Dim WMIServices As SWbemServicesDim WMIObjectSet As SWbemObjectSetDim WMIObject As SWbemObjectPrivate Sub CommandButton1_Click()Dim i As LongSheet1.Cells.ClearSheet1.Range("a1:e1") = Array("名称", "状态", "启动类型", "登录身份", "描述")Set WMIServices = WMILocator.ConnectServer()  '利用指针连接到本机的WMI,返回一个对 SWbemServices 对象的引用Set WMIObjectSet = WMIServices.InstancesOf("Win32_Service")'用对象WMIServices的InstancesOf方法返回Win32_Service类名标识的所有实例i = 2With Sheet1    For Each WMIObject In WMIObjectSet '在WMIObjectSet(Win32_Service类集合)中遍历每个实例        .Range("a" & i).Value = WMIObject.DisplayName '服务名称添加到a列        If WMIObject.State = "Stopped" Then '判断对象State属性的值并转换为中文添加到B列            .Range("b" & i).Value = "停止"        Else            .Range("b" & i).Value = "启动"        End If        If WMIObject.StartMode = "Disabled" Then '判断对象StartMode属性的值并转换为中文添加到C列            .Range("c" & i).Value = "禁用"        ElseIf WMIObject.StartMode = "Manual" Then            .Range("c" & i).Value = "手动"        Else            .Range("c" & i).Value = "自动"        End If        .Range("d" & i).Value = WMIObject.StartName '将服务的登录身份添加到D列                .Range("e" & i).Value = WMIObject.Description '将服务的描述添加到E列        i = i + 1    NextEnd WithSet WMIObject = NothingSet WMIObjectSet = NothingEnd Sub
------解决方案--------------------------------------------------------
总结一下使用WMI的步骤:
1、添加对“Microsoft WMI Scripting V1.1 Library”的引用。
2、创建SwbemLocator指针。创建指针的目的是为了建立对WMI对象的引用实例,然后用这个实例操作WMI。
用Dim WMILocator As New SwbemLocator定义语句直接创建就可以了。
3、连接到WMI服务
Set WMIServices = WMILocator.ConnectServer()
'利用指针连接到指定计算机的WMI服务,然后返回一个SwbemServices对象。
4、获得WMI类的实例集合
Set WMIObjectSet = WMIServices.InstancesOf(“类名”)
'利用SwbemServices对象的InstancesOf 方法返回指定类名的所有实例
5、使用WMI资源

  相关解决方案