65.9K
CodeProject 正在变化。 阅读更多。
Home

获取 WMI 提供的所有数据

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.88/5 (7投票s)

2009年10月5日

CPOL

1分钟阅读

viewsIcon

37727

这个简单的函数将以编程方式枚举 WMI 类中的所有属性和值。

引言

在查看了数十个简单的脚本和应用程序,它们都从一个 WMI 类中提取 5-6 个信息字段后,我决定将所有内容提取到 DataTable 中,然后从中进行操作会更容易。这个简单的函数公开了给定 WMI 类上的所有属性和值,并返回一个包含结果的 DataTable

代码

首先,您需要使用这些库

Imports System.Data
Imports System.Management
Imports Microsoft.Win32

接下来,创建一个空的 DataTable 和一个 ManagementObjectSearcher 作为我们查询 WMI 服务的基准。

Dim dt As New DataTable()

Dim searcher As New ManagementObjectSearcher( _
    "root\CIMV2", _ "SELECT * FROM " & wmiClass)
    'where wmiClass is the input variable

为了获取所有属性名称,您必须获取搜索器中的第一个 ManagementObject。然后,只需循环遍历对象中的每个属性名称,并为每个属性向表中添加一列。

For Each queryObj As ManagementObject In searcher.Get()
    For Each item As PropertyData In queryObj.Properties()
        Try
            dt.Columns.Add(item.Name)
        Catch ex As Exception
        End Try
    Next
    Exit For
Next

然后,循环遍历搜索器中的每个对象,并将每个对象的每个属性的值添加到数据表中

For Each queryObj As ManagementObject In searcher.Get()
    Dim dr As DataRow = dt.NewRow
    For Each item As PropertyData In queryObj.Properties()
        Try
            dr(item.Name) = item.Value
        Catch ex As Exception
        End Try
    Next
    dt.Rows.Add(dr)
Next

完成了!现在,您拥有一个 DataTable (dt),其中包含给定 WMI 类中的所有属性和值。尝试将 wmiClass 变量设置为以下任何一个

  • Win32_OperatingSystem
  • Win32_OnBoardDevice(硬件设备)
  • Win32_Process(当前进程)
  • Win32_Printer(打印机)
  • Win32_Product(已安装的软件)
  • Win32_QuickFixEngineering(已安装的补丁)

dt 绑定到 GridView 并查看结果。如果您想做得更花哨,您还可以使用 DropDownList 来设置 wmiClass 变量,并轻松查看有关您系统的海量数据。微软在这里提供了一个简单的 WMI 任务参考:http://msdn.microsoft.com/en-us/library/aa394585(VS.85).aspx

尽情享用!

© . All rights reserved.