通过托管代码 (.NET)/命令行启用 Windows 事件日志

本文关键字:启用 命令行 Windows 事件 日志 托管代码 NET | 更新日期: 2023-09-27 18:36:28

是否有一种编程方式允许我在默认情况下禁用事件日志时启用它?简而言之,我只需要知道是否可以启用特定的事件日志,以便能够以编程方式使用这些事件。

谢谢

通过托管代码 (.NET)/命令行启用 Windows 事件日志

要启用 Windows 事件日志,请使用 wevtutil

特别是要启用写字板日志,请执行以下操作:

wevtutil sl "Microsoft-Windows-Wordpad/Admin" /e:true

假设您正在谈论启用/禁用系统日志(应用程序、安全、设置、系统),我认为这是不可能的。

这是 Windows 开发人员中心上的事件日志(需要更深入的戳才能找到有用的信息)http://msdn.microsoft.com/en-us/library/windows/desktop/aa964766%28v=vs.85%29.aspx

以下是有关注册表设置的部分:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363648%28v=vs.85%29.aspx

组策略设置:http://blogs.technet.com/b/askds/archive/2008/08/12/event-logging-policy-settings-in-windows-server-2008-and-vista.aspx

有趣的是,这允许您启用或禁用安装日志,但不允许其他默认日志。

我只是认为,如果您无法通过注册表或组策略做到这一点,那么它就无法完成。

编辑:

无法通过 API 以编程方式启用/禁用事件日志。我唯一的证据是它不存在。所以我检查了其他方式:PowerShell,WMI,注册表,组策略 - 您可以从代码中控制的东西。没有快乐。但是,禁用事件日志的唯一方法是停止该服务。

这应该以编程方式启用事件日志。它使用 EventLogSession 参数

    var elSession = new EventLogSession("computername", "domain", "username", password, SessionAuthentication.Default);
    var elConfig = new EventLogConfiguration("Microsoft-Windows-Wordpad/Admin", elSession);
    if (!elConfig.IsEnabled)
    {
        elConfig.IsEnabled = true;
        elConfig.SaveChanges();
    }