4

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

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

(我也在寻找关于 SU 的解决方法:如何在任务计划程序启动的应用程序中获取事件信息?

4

2 回答 2

1

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

于 2010-11-18T08:29:13.983 回答
0

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

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

EventLog log = new EventLog("System");
于 2015-12-18T07:50:11.137 回答