如何监控Active Directory用户登录/注销?

时间:2010-11-17 08:33:58

标签: c# active-directory event-log windows-server

我正在 C#中编写一个简单的桌面应用程序,只要有人登录或注销 Active Directory ,就会在文本框中显示一行文本。它注定要在 Windows Server 2008 Windows Server 2003 下与 AD 在同一台计算机上运行。到目前为止一切顺利,对于 S2008 ,每当触发ManagementEventWatcher的事件时,我都会被(EventCode = 4624 OR EventCode = 4634)触发。

以下是我目前使用的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?

2 个答案:

答案 0 :(得分:1)

Windows Server 2008 计算机在正常运行时间仅几小时后才开始表现。重启修复了问题。这只是一种预感,但它可能是由于尝试在S2008机器上启动我的应用程序太多次并且错误太多而导致操作系统的配置混乱。

答案 1 :(得分:0)

您可以使用系统注销并登录事件。系统中的每个活动都由Windows操作系统监视,并在事件日志中可用。

您可以使用.Net类来获取这些已保存的事件。喜欢获取系统事件

EventLog log = new EventLog("System");