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

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

我正在用 C# 编写一个简单的桌面应用程序,只要有人登录或注销 Active Directory,它就会在文本框中显示一行文本。它注定要在 Windows Server 2008Windows 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 地址。

奇怪的是,即使用户注销,我仍然只收到一个事件代码为 4624 的事件。4634 事件发生了什么?如何捕获注销?

(我也在寻找 SU 的解决方法:How to get event info in application launched by Task Scheduler?)

最佳答案

Windows Server 2008 机器在正常运行仅几个小时后就开始出现这种情况。重新启动解决了问题。这只是一种预感,但这可能是由于尝试在 S2008 机器上启动我的应用程序太多次并且出现太多错误,从而弄乱了操作系统的配置。

关于c# - 如何监控 Active Directory 用户登录/注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4202688/

相关文章:

c# - 检查它是否是sqldatareader中的最后一条记录

c# - 为什么 GetAttribute ("disabled") 返回 "true"而不是 "disabled"?

c# - 我如何使用频率分析来解析加密的段落?

c++ - 检查用户是本地帐户还是域帐户

powershell - 如何使用Powershell从事件目录获取唯一部门?

c# - 为什么此事件日志的 EntryWritten 事件永远不会触发?

asp.net - 始终可供写入的事件日志源?

c# - 在多线程程序中使用 EF 的好建议?

linux - 如何将OTRS 5与Microsoft LDAP服务器连接以进行用户身份验证?

c# - 为什么 WriteEntry 不适用于此 EventLog 源?