2012-01-12 104 views
0

我試圖使用WMI來監視事件日誌EntryWritten事件,所以我成立了處理程序如下:使用WMI監視事件日誌

// 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()方法,但如果我做的服務無法啓動。我想知道有人對此有任何想法嗎?

回答

3

您WQL senence是錯誤的 Select * From __InstanceCreationEvent Where TargetInstance.LogFile='Application'

您必須包括您在句中使用ISA關鍵字

的東西,像這樣

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

檢查類