2010-11-17 102 views
4

我在C#中編寫了一個簡單的桌面應用程序,它在某人登錄或關閉活動目錄時在文本框中顯示一行文本。它註定要在與AD相同的機器上運行,在下運行Windows Server 2008Windows Server 2003。到目前爲止這麼好,對於S2008每當觸發(EventCode = 4624 OR EventCode = 4634)的事件時,我都設法觸發ManagementEventWatcher如何監視Active Directory用戶登錄/註銷?

這是我目前使用WMI查詢:

SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance isa "Win32_NTLogEvent" AND (TargetInstance.EventCode = '4624' OR TargetInstance.EventCode = '4634') 

,然後我解析eventArgs.Properties["TargetInstance"].Properties["Message"]尋找客戶端的用戶和IP地址。

奇怪的是,即使用戶註銷,我仍然只獲得EventCode 4624的一個事件。4634事件發生了什麼?我如何捕獲註銷?

(我也在尋找一個變通的SU:How to get event info in application launched by Task Scheduler?

回答

1

的Windows Server 2008機開始只有幾個小時的運行時間後表現這樣。重新啓動解決了問題。這只是一種預感,但它可能是由於嘗試在S2008機器上啓動我的應用程序太多次且錯誤太多而導致操作系統配置混亂的原因。

0

您可以使用系統註銷並登錄事件。系統中的每項活動都由Windows操作系統監控,並在事件日誌中提供。

您可以使用.Net類來獲取這些保存的事件。喜歡獲取系統事件

EventLog log = new EventLog("System");