WMI 查询

WMI 查询 

 

可以在 .NET Framework 应用程序中使用标准 WMI 查询。WMI 查询使用 WMI 查询语言 (WQL),该语言是 SQL 的一个子集。查询字符串存储在 .NET Framework 查询类中(例如 SelectQuery 类、WqlEventQuery 类或 RelatedObjectQuery 类),并由 ManagementObjectSearcherManagementEventWatcher 类构造函数进行调用。

有关更多信息,请参见 MSDN Library(网址为 http://msdn.microsoft.com/library)中 Windows Management Instrumentation 文档中的“使用 WQL 查询”。

查询通过包含以下内容限制返回的数据量:

  • SELECT 子句,指定只返回某些属性的数据。

  • WHERE 子句,指定要返回的实例。

例如,以下查询选择计算机上所有可用空间小于 2 MB 的驱动器(驱动器 C、D 等):

SELECT * FROM Win32_LogicalDisk WHERE FreeSpace < 2000000

查询类的类型

.NET Framework 中的 WMI 包含 Framework 架构中的许多查询类。有些查询类执行特定类型的 WQL 查询,例如 WQL SELECT 查询或 WQL ASSOCIATORS OF 查询。

下表显示可以用于生成 WMI 数据查询的查询类。

 
.NET Framework 类 说明

EventQuery

WMI 事件查询。在 ManagementEventWatcher 类的构造函数中,使用此类或其派生类的对象预订 WMI 事件。尽可能使用此类更具体的派生类,例如 WqlEventQuery 类。

ManagementQuery

派生其他查询类的抽象基类。

ObjectQuery

可以返回实例或类的 WMI 对象的查询。

RelatedObjectQuery

一种 WQL ASSOCIATORS OF 查询,既可以用于实例查询又可以用于架构查询,视请求的是类还是实例子集而定。用于在 ManagementObjectSearcher 类的构造函数中指定查询,以获取通过关联类进行关联的类的所有实例。

RelationshipQuery

一种 WQL REFERENCES OF 查询,既可以用于实例查询又可以用于架构查询,视请求的是类还是实例子集而定。

SelectQuery

一种 WQL SELECT 查询,既可以用于实例查询又可以用于架构查询,视请求的是类还是实例子集而定。有关更多信息,请参见 MSDN Library(网址为 http://msdn.microsoft.com/library)中 Windows Management Instrumentation 文档中的“用于数据查询的 SELECT 语句”、“用于事件查询的 SELECT 语句”或“用于架构查询的 SELECT 语句”。

WqlEventQuery

WQL 格式的 WMI 事件查询。在 ManagementEventWatcher 类中使用此类或其派生类的对象预订 WMI 事件。

WqlEventQuery

WQL 格式的 WMI 查询。在 ManagementObjectSearcher 类的构造函数中使用此类或其派生类的对象指定查询。为了更具体,尽可能使用此类更简明的派生类,例如 SelectQuery 类。

下图显示 .NET Framework 类库中的 WMI 查询类的继承。.NET Framework 中的 WMI 包含对象查询类和事件查询类。

查询类的类层次结构

查询类和 WQL 查询

using System;
using System.Management;
class Query_SelectQuery
{
    public static int Main(string[] args) 
    {
        SelectQuery selectQuery = new 
            SelectQuery("Win32_LogicalDisk");
        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher(selectQuery);

        foreach (ManagementObject disk in searcher.Get()) 
        {
            Console.WriteLine(disk.ToString());
        }

        Console.ReadLine();
        return 0;
    }
}

此代码示例使用 SELECT 查询的原始 WQL 形式。

Visual Basic
Imports System
Imports System.Management

Public Class Query_Select_FullString

    Public Overloads Shared Function _
        Main(ByVal args() As String) As Integer

        Dim wqlQuery As WqlObjectQuery
        wqlQuery = New WqlObjectQuery( _
            "SELECT * FROM Win32_LogicalDisk")

        Dim searcher As ManagementObjectSearcher
        searcher = New ManagementObjectSearcher(wqlQuery)

        Dim disk As ManagementObject
        For Each disk In searcher.Get()
            Console.WriteLine(disk.ToString())
        Next

        Console.ReadLine()
        Return 0

    End Function
End Class
using System;
using System.Management;

class Query_Select_FullString
{
    public static int Main(string[] args) 
    {
        WqlObjectQuery wqlQuery = 
            new WqlObjectQuery("SELECT * FROM Win32_LogicalDisk");
        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher(wqlQuery);

        foreach (ManagementObject disk in searcher.Get()) 
        {
            Console.WriteLine(disk.ToString());
        }

        Console.ReadLine();
        return 0;
    }
}
复制代码
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值