upWMI 概述请参见
Windows 管理规范 (WMI) 中的应用程序分析 | WMI 结构 | WMI 和 Visual Studio Analyzer 结构 | WMI 应用程序分析的工作机制 | WMI 事件源安装 | 设计易管理性
Windows 管理规范 (WMI) 是可伸缩的系统管理结构,它采用一个统一的、基于标准的、可扩展的面向对象接口。WMI 为您提供与系统管理信息和基础 WMI API 交互的标准方法。WMI 主要由系统管理应用程序开发人员和管理员用来访问和操作系统管理信息。WMI 可用于生成组织和管理系统信息的工具,使管理员或系统管理人员能够更密切地监视系统活动。例如,可以使用 WMI 开发一个应用程序,用于在 Web 服务器崩溃时呼叫管理员。 

解决方案 »

  1.   

    up以下组件构成 WMI 结构: 提供程序 
    使用者 
    公共信息模型 (Common Information Model, CIM) 储存库 
    公共信息模型对象管理器 (Common Information Model object manager, CIMOM) 
    这些组件建立在 CIM 之上。该模型面向对象、独立于系统和应用程序,并且提供定义托管计算环境中的对象的分层架构。CIM 通过类定义托管环境中的对象。这些类包括描述行为的方法和描述数据的属性。CIM 中包括的对象有应用程序、网络、打印机和驱动程序等。“提供程序”是托管系统(如操作系统、服务、应用程序、设备驱动程序等)与 CIMOM 之间的中间代理程序。在 Visual Studio Analyzer 中提供程序相当于事件源。其作用是使用系统提供的任何管理接口提取系统的管理信息。通过各种 COM 接口,提供程序可向 WMI 提供数据,处理来自系统管理应用程序的请求,并生成事件通知。提供程序还将管理信息和接口映射到 CIM 储存库中定义和存储的对象类。“使用者”是系统管理应用程序(如 Microsoft Systems Management Server (SMS))或第三方应用程序或脚本。使用者只需要知道它们打算获取其信息的对象的类。信息的来源以及实际获取信息的方式无关紧要,它们被隐藏起来。使用者可以获取有关计算机、操作系统、应用程序和设备的信息,以及获取可通过其他管理协议得到的信息。“CIM 储存库”是一个对象数据库,用于存储定义的对象,如用于访问和操作系统管理信息的静态类定义和实例。CIM 储存库由 CIMOM 管理,它形同对象请求的代理程序。CIMOM 跟踪可用的类并决定由哪一个提供程序负责提供这些类的实例。CIMOM 和 CIM 储存库由称为 WinMgmt 的系统服务表示,可通过一组 COM 接口访问。 下图阐释了这些组件是如何协作的。
                          WMI使用者
                       (管理应用程序)
                            |
    CIM存储库--------CIM对相管理器CIMOM
                         (WinMgmt)
                            |
                        提供程序
                         (事件源)
                            |
                        托管服务
                 (操作系统,服务,应用程序等)
    当收到 WMI 使用者发出的管理信息请求时,CIMOM 对该请求进行计算处理,找到具有该信息的提供程序,然后将数据返回给使用者。使用者只请求所需的信息,它毫不知晓信息的确切来源,也不了解从基础 API 中提取有关信息的任何细节。
      

  2.   

    TO: cnwd() 嘎嘎……收到了,谢谢你哈…!!!
      

  3.   

    TO: cnwd() 
    可以给我发个吗?  谢谢!!
    [email protected]
      

  4.   

    粘一个有关BIOS的信息
    需要一个listview
    Private Sub wmiBiosInfo()
          
       Dim BiosSet As SWbemObjectSet
       Dim bios As SWbemObject
       Dim itmx As ListItem
       Dim cnt As Long
       Dim msg As String
       
       Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
                                          InstancesOf("Win32_BIOS")
       
       On Local Error Resume Next
       
       For Each bios In BiosSet
       
          Set itmx = ListView1.ListItems.Add(, , "PrimaryBIOS")
          itmx.SubItems(1) = bios.PrimaryBIOS
                
          Set itmx = ListView1.ListItems.Add(, , "Status")
          itmx.SubItems(1) = bios.Status
          
          For cnt = LBound(bios.BIOSVersion) To UBound(bios.BIOSVersion)
             Set itmx = ListView1.ListItems.Add(, , IIf(cnt = 0, "BIOSVersion strings", ""))
             itmx.SubItems(1) = bios.BIOSVersion(cnt)
          Next
          
          Set itmx = ListView1.ListItems.Add(, , "Caption")
          itmx.SubItems(1) = bios.Caption
          
          Set itmx = ListView1.ListItems.Add(, , "Description")
          itmx.SubItems(1) = bios.Description
          
          Set itmx = ListView1.ListItems.Add(, , "Name")
          itmx.SubItems(1) = bios.Name      Set itmx = ListView1.ListItems.Add(, , "Manufacturer")
          itmx.SubItems(1) = bios.Manufacturer      Set itmx = ListView1.ListItems.Add(, , "ReleaseDate")
          itmx.SubItems(1) = bios.ReleaseDate      Set itmx = ListView1.ListItems.Add(, , "SerialNumber")
          itmx.SubItems(1) = bios.SerialNumber      Set itmx = ListView1.ListItems.Add(, , "SMBIOSBIOSVersion")
          itmx.SubItems(1) = bios.SMBIOSBIOSVersion
          
          Set itmx = ListView1.ListItems.Add(, , "SMBIOSMajorVersion")
          itmx.SubItems(1) = bios.SMBIOSMajorVersion
          
          Set itmx = ListView1.ListItems.Add(, , "SMBIOSMinorVersion")
          itmx.SubItems(1) = bios.SMBIOSMinorVersion      Set itmx = ListView1.ListItems.Add(, , "SMBIOSPresent")
          itmx.SubItems(1) = bios.SMBIOSPresent
          
          Set itmx = ListView1.ListItems.Add(, , "SoftwareElementID")
          itmx.SubItems(1) = bios.SoftwareElementID
          
          Set itmx = ListView1.ListItems.Add(, , "SoftwareElementState")
          Select Case bios.SoftwareElementState
             Case 0: msg = "deployable"
             Case 1: msg = "installable"
             Case 2: msg = "executable"
             Case 3: msg = "running"
          End Select
          itmx.SubItems(1) = msg
          
          Set itmx = ListView1.ListItems.Add(, , "Version")
          itmx.SubItems(1) = bios.Version      Set itmx = ListView1.ListItems.Add(, , "InstallableLanguages")
          itmx.SubItems(1) = bios.InstallableLanguages      Set itmx = ListView1.ListItems.Add(, , "CurrentLanguage")
          itmx.SubItems(1) = bios.CurrentLanguage
            
          For cnt = LBound(bios.ListOfLanguages) To UBound(bios.ListOfLanguages)
          
             Set itmx = ListView1.ListItems.Add(, , IIf(cnt = 0, "ListOfLanguages", ""))
             itmx.SubItems(1) = bios.ListOfLanguages(cnt)
             
          Next cnt      For cnt = LBound(bios.BiosCharacteristics) To UBound(bios.BiosCharacteristics)
          
             Set itmx = ListView1.ListItems.Add(, , IIf(cnt = 0, "BIOS Characteristics", ""))
          
             Select Case bios.BiosCharacteristics(cnt)
                Case 0: msg = "reserved"
                Case 1: msg = "reserved"
                Case 2: msg = "unknown"
                Case 3: msg = "BIOS characteristics not supported"
                Case 4: msg = "ISA supported"
                Case 5: msg = "MCA supported"
                Case 6: msg = "EISA supported"
                Case 7: msg = "PCI supported"
                Case 8: msg = "PC Card (PCMCIA) supported"
                Case 9: msg = "Plug and Play supported"
                Case 10: msg = "APM is supported"
                Case 11: msg = "BIOS upgradable (Flash)"
                Case 12: msg = "BIOS shadowing allowed"
                Case 13: msg = "VL-VESA supported"
                Case 14: msg = "ESCD support available"
                Case 15: msg = "Boot from CD supported"
                Case 16: msg = "Selectable boot supported"
                Case 17: msg = "BIOS ROM socketed"
                Case 18: msg = "Boot from PC card (PCMCIA) supported"
                Case 19: msg = "EDD (Enhanced Disk Drive) specification supported"
                Case 20: msg = "Int 13h, Japanese Floppy for NEC 9800 1.2mb (3.5, 1k b/s, 360 RPM) supported"
                Case 21: msg = "Int 13h, Japanese Floppy for Toshiba 1.2mb (3.5, 360 RPM) supported"
                Case 22: msg = "Int 13h, 5.25 / 360 KB floppy services supported"
                Case 23: msg = "Int 13h, 5.25 /1.2MB floppy services supported"
                Case 24: msg = "Int 13h 3.5 / 720 KB floppy services supported"
                Case 25: msg = "Int 13h, 3.5 / 2.88 MB floppy services supported"
                Case 26: msg = "Int 5h, print screen service supported"
                Case 27: msg = "Int 9h, 8042 keyboard services supported"
                Case 28: msg = "Int 14h, serial services supported"
                Case 29: msg = "Int 17h, printer services supported"
                Case 30: msg = "Int 10h, CGA/Mono video aervices supported"
                Case 31: msg = "NEC PC-98"
                Case 32: msg = "ACPI supported"
                Case 33: msg = "USB Legacy supported"
                Case 34: msg = "AGP supported"
                Case 35: msg = "I2O boot supported"
                Case 36: msg = "LS-120 boot supported"
                Case 37: msg = "ATAPI ZIP drive boot supported"
                Case 38: msg = "1394 boot supported"
                Case 39: msg = "Smart battery supported"
             End Select
             
             itmx.SubItems(1) = msg
             
          Next  'For cnt
          
       Next  'For Each biosEnd Sub
      

  5.   

    大家有没有详细的电子教程哈???实例固然很好,但WMI的知识不懂怎么来看实例哈?大家有的话请给我发一个撒? ̄!!!
    我一定加分的哈。
      

  6.   

    找一个WMI的对象浏览器,然后再找WMI SDK,在帮助中基本上有全部的对象模型和使用方法,可惜的是,WMI受限颇多,但XP平台上基本上没问题。你尽可以用了。使用对象时注意它的方法和属性的受限平台。