我正在尝试使用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 回答
你WQL senence错了
Select * From __InstanceCreationEvent Where TargetInstance.LogFile='Application'
您必须使用
ISA
关键字在句子中包含您正在检查的类像这样的东西
Select * From __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile='Application'