-->

WMIEvent类的列表(List of WMIEvent classes)

2019-07-29 06:28发布

最近我一直在学习有关WMI和WQL。 我发现的Win32类(从MSDN),我可以查询的名单,但我不能找出事件类的列表(应该是Win32的类别列表中的子集,是不是?)没有任何一个有一个列表或某种小抄的这个? 我仅仅指刚问这个是出于好奇。

例如,对于事件类- Win32_ProcessStartTrace

Answer 1:

下面是如何列出的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是一个WMI元数据查询。 它用:

  • Meta_Class指定查询的模式查询,
  • __This财产递归列出__Event小类

(见这里和这里 )。

WMI类是如果供应商实现为一个事件WMI提供程序,并且必须是子类的事件类__Event 。 这并不意味着你不能用“普通” WMI类,如Win32_ProcessWin32_Service在WQL事件查询。 你只需要使用一个__InstanceOperationEvent衍生的辅助类,如__InstanceCreationEvent__InstanceDeletionEvent和WMI将使用自己的事件子系统提供的事件。

下面是订阅样本WQL查询Win32_Process创建事件:

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

在这种情况下,你必须使用Within子句。



Answer 2:

WMI代码造物主是学习WMI的是,除其他事项外,让您探索本地或远程计算机上的WMI事件类和用于接收事件通知代码生成一个伟大的工具。

编辑:既然你标记你的问题是C#,你可能有兴趣在获取从编程特定类派生的事件类的列表的代码:

using System.Management;
...

string ancestor = "WMIEvent";     // the ancestor class
string scope = "root\\wmi";       // the WMI namespace to search within

try
{
    EnumerationOptions options = new EnumerationOptions();
    options.ReturnImmediately = true;
    options.Rewindable = false;

    ManagementObjectSearcher searcher =
        new ManagementObjectSearcher(scope, "SELECT * FROM meta_class", options);

    foreach (ManagementClass cls in searcher.Get())
    {
        if (cls.Derivation.Contains(ancestor))
        {
            Console.WriteLine(cls["__CLASS"].ToString());
        }
    }
}
catch (ManagementException exception)
{
    Console.WriteLine(exception.Message);
}


Answer 3:

没有MSDN有所有的清单MSMCA这里班

更新:
我不这样做吨的工作与WMI,但我刚刚发现这个WMI工具,这将是有帮助的。 它给你的观看对象的WMI层次结构中的图形用户界面,甚至可以让你注册并消费事件。 这应该给你你需要的信息。



文章来源: List of WMIEvent classes