如何长时间自动保存Security日志中的Logon事件信息?

How to automatically store only Logon event information from Security log over a long period of time?

我有一个 Windows 服务器,有很多人使用,我们正在寻求升级它,并将每个人都转移到新服务器。

我想识别当前用户,以便提前通知他们。

我已启用登录审核,并且可以在当前安全日志中看到事件 ID 4624 以及用户 ID。到目前为止一切顺利。

但是安全日志很快就会填满!在配置大小为 200 MB 的情况下,它仅会在内容存档前持续一天。

可能 Windows 自动保存 4624 事件,并且只有那个事件 自动保存在某个地方,这样我就可以记录所有未来的登录一段时间?

是的,这是可能的。您可以为此编写自定义 application/service 来做到这一点。您可以同时使用 EventLog class 和 EventLogWatcher class 来实现它。

Main Logic:

string queryString = "<QueryList><Query Id=\"0\" Path=\"Security\">"
                    +"<Select Path=\"Security\">*[System[(EventID=4624)]]</Select>"
                    +"</Query></QueryList>";
EventLogWatcher watcher = new EventLogWatcher(new EventLogQuery("Security", PathType.LogName,queryString));
watcher.EventRecordWritten += new EventHandler<EventRecordWrittenEventArgs>(EventGenerated);
watcher.Enabled = true;

EventHandler:

public void EventGenerated(object source, EventRecordWrittenEventArgs args){
    //Do whatever you want here
}