我正在尝试使用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()方法中,但如果我这样做,服务就不会启动。我想知道是否有人对此有任何想法?
答案 0 :(得分:3)
你WQL senence是错误的
Select * From __InstanceCreationEvent Where TargetInstance.LogFile='Application'
您必须使用ISA
关键字
像这样的东西
Select * From __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile='Application'