使用WMI监视事件日志

时间:2012-01-12 17:21:27

标签: c# wmi

我正在尝试使用WMI来监视EntryWritten事件的事件日志,因此我按如下方式设置了处理程序:

// Create the event log monitor
        string query = "Select * From __InstanceCreationEvent Where TargetInstance.LogFile='Application'";
        WqlEventQuery aProcessCreationQuery = new WqlEventQuery(query);
        ManagementEventWatcher aWatcher = new ManagementEventWatcher(aProcessCreationQuery);
        aWatcher.EventArrived += new EventArrivedEventHandler(EventLogMonitor);

但我的处理程序方法EventLogMonitor永远不会触发,即使正在将事情写入应用程序事件日志。我的应用程序作为服务监视运行,用于监视写入事件日志的内容。

我找到了可能需要添加该行的地方:

aWatcher.Start()
在StartService()方法中

,但如果我这样做,服务就不会启动。我想知道是否有人对此有任何想法?

1 个答案:

答案 0 :(得分:3)

你WQL senence是错误的 Select * From __InstanceCreationEvent Where TargetInstance.LogFile='Application'

您必须使用ISA关键字

在句子中包含您正在检查的课程

像这样的东西

Select * From __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile='Application'

相关问题