我在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?)