最近我已经学习WMI和WQL.我发现了清单的Win32类(从MSDN),我可以查询,但我不能够找出该清单的活动类(应该子集将列Win32类不是吗?) 没有任何一个有一个清单或某种类型的小抄吗?我只是问这个的好奇心。

例的事件类 Win32_ProcessStartTrace

有帮助吗?

解决方案

这里是怎么表WMI事件类的 root\cimv2 名称空间与C# System.Management:

using System;
using System.Management;

class Program
{
    static void Main()
    {
        string query =
            @"Select * From Meta_Class Where __This Isa '__Event'";

        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher(query);

        foreach (ManagementBaseObject cimv2Class in searcher.Get())
        {
            Console.WriteLine(cimv2Class.ClassPath.ClassName);
        }
    }
}

root\cimv2 是的默认WMI名字空间所以你不必使用 ManagementScope 实例。WQL查询过来 ManagementObjectSearcher 是系统的元数据查询。它用途:

  • Meta_Class 指定的查询作为一种模式查询,
  • __This 酒店递归列表 __Event 子类

(见 在这里,在这里,).

WMI类是一个类事件,如果它提供实现为一个事件WMI提供者必须被一个子类的 __Event.这并不意味着你不能使用"普通"类喜欢 Win32_ProcessWin32_Service 在WQL事件的查询。你只需要使用的一个 __InstanceOperationEvent 来帮助类似的 __InstanceCreationEvent__InstanceDeletionEvent, 和WMI将利用其自己的事件子系统交付的事件。

这里是一样WQL查询,赞同 Win32_Process 创作活动:

Select * From __InstanceCreationEvent Within 5 Where TargetInstance Isa 'Win32_Process'

在这种情况下你有用 Within 条款。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top