【问题标题】:How to know which service fire this __InstanceModificationEvent event?如何知道哪个服务触发了这个 __InstanceModificationEvent 事件?
【发布时间】:2012-12-05 10:32:17
【问题描述】:

我有简单的代码来跟踪服务状态。但在我的代码中,我只能知道服务启动或停止。我想知道哪个服务启动或停止。

这是我的代码示例。 这是主要功能:

public void TrackService()
        {
            string queryRunning = "SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA \"Win32_Service\" AND TargetInstance.State=\"Running\"";
            ManagementEventWatcher watcher = null;
            watcher = new ManagementEventWatcher(queryRunning);
            watcher.EventArrived += new EventArrivedEventHandler(ServiceStart);
            watcher.Start();
        }

这是事件函数。

private void ServiceStart(object sender, EventArrivedEventArgs e)
    {
        string msg = "Services has started.";
        Console.WriteLine(msg);
    }

【问题讨论】:

    标签: c# events service wmi wmi-query


    【解决方案1】:

    我在搜索时在here 中找到了它。

    private void ServiceStart(object sender, EventArrivedEventArgs e)
            {
                string msg = ((ManagementBaseObject)e.NewEvent["TargetInstance"])["DisplayName"];
            }
    

    这就是我想要的。 (ManagementBaseObject)e.NewEvent["TargetInstance"])

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多