我在C#中編寫了一個簡單的桌面應用程序,它在某人登錄或關閉活動目錄時在文本框中顯示一行文本。它註定要在與AD相同的機器上運行,在下運行Windows Server 2008和Windows 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?)