一键批量禁用、清空系统日志事件
2018-07 from--https://blog.csdn.net/ingino/article/details/81279611

一、引言

网络上虽然包含大量关于清除 Windows 系统日志事件以达到瘦身、提速目的的教程,但这些教程往往忽略了一点,即如果不将某些日志条目进行禁用,则随着时间的推移流逝、用户的操作增多,系统还会产生大量的日志记录,届时,还要对其进行清除操作,这给用户带来了诸多不便。因此,笔者认为,相较于频繁性清除日志而言,一次性禁用日志记录能够从根本上保证系统日志的清洁性,因为一旦禁用了日志条目,该日志项就不会产生任何事件记录,进而也免去了用户不断清空日志的烦恼。

二、Windows 系统日志事件浅析

打开 Windows 10 1803 企业版的事件查看器,可以发现,Windows 的日志事件总体分为两个部分,第一部分是“Windows 日志”,第二部分是“应用程序和服务日志”。(如下图所示)

Windows 的日志事件总体分为两个部分


其中,“Windows 日志”主要记录了操作系统网络连接、关键进程、系统安全、系统服务运行的信息、警告、错误等日志,该部分日志的各项条目均比较重要,这些条目能够帮助用户确定操作系统的关键性信息和问题,因此,右键这些条目,只有清除日志的选项,而没有禁用日志的选项(如下图所示)。

只有清除日志的选项,而没有禁用日志的选项


“应用程序和服务日志”主要记录当前操作系统各模块项、服务项、应用项的信息、警告、错误等日志,展开“应用程序和服务日志”条目,定位 Microsoft→Windows,该部分日志支持禁用、清除(如下图所示)。可以发现,该项目包含大量的日志条目,笔者统计,共计300个子条目,因此,这部分日志如果不清除、不禁用,则会占用较大的磁盘空间,并对系统运行效率产生一定影响,因此,本文重点探讨该部分日志的一键清除、禁用。

该部分日志支持禁用、清除


Windows 10 1803 企业版系统日志事件的文件,位于

【C:\Windows\System32\winevt\Logs】

下,即后缀名为evtx的文件,这些文件的大小,取决于日志事件的记录数量。

系统日志事件的文件


Windows 10 1803 企业版系统日志事件的配置,位于注册表中

【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels】

下,任意选取几项,可以发现,每一项目中,都包含相同的字符串值和DWORD(32位值),我们着重聚焦【Enabled】这一DWORD(32位值),双击该值,可以对其进行更改。
改为0,则代表禁用日志;
改为1,则代表启用日志(如下图所示)。

系统日志事件的配置

三、一键禁用日志记录

为了一键禁用日志记录,我们需要使用 wevtutil 这一 Cmd 命令(也可采用注册表导入的方式,但本文不做介绍),笔者参考了有关 wevtutil 命令用法的微软文档(Microsoft Doc),该文档由微软官方出版,具有权威性和可靠性,而不像百度搜到的那些复制来、粘贴去的代码那样,可靠性极低。

【Microsoft Doc 链接:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc732848(v=ws.11)

参阅文档可知, 禁用指定系统日志项目的 Cmd 命令语法为

wevtutil sl "日志条目全名" /e:false
  • 1

例如,
如果要通过 Cmd 禁用 Microsoft-Windows-Application Server-Applications 这一日志条目,则需要展开该文件夹,分别右键“操作”和“管理”,在弹出的对话框中,我们聚焦“全名”这一条目框,该条目框显示的名称,就是该日志项目的全名(如图所示)。

日志项目的全名

我们全选并复制这一名称,结合禁用系统日志的 Cmd 命令语法,然后则可以在 Cmd 中输入以下命令,回车执行,随后重新打开事件查看器,即可查看效果。

wevtutil sl "Microsoft-Windows-Application Server-Applications/Operational" /e:false
wevtutil sl "Microsoft-Windows-Application Server-Applications/Admin" /e:false
  • 1
  • 2

然而,
前文提过,Microsoft → Windows 包含300个日志条目,一条一条用鼠标去点,难免浪费时间,因此,需要一键获取这些条目名称,我们定位前文提到过的日志文件,即位于 C:\Windows\System32\winevt\Logs 下的 evtx 文件,我们需要获取该文件夹所包含的日志事件名称的Txt列表,
1.管理员身份运行 Cmd。
2.输入

Cd C:\Windows\System32\winevt\Logs
  • 1

3.回车
4.再输入

Dir *.* /B >D:\List.txt
  • 1

5.回车
然后,就会在 D盘根目录下多出一个 List.txt,这个 List.txt 包含 C:\Windows\System32\winevt\Logs 这个文件夹内所有文件的名称。
6.打开List.txt
为了保险起见,只选取 Microsoft → Windows下,从 Microsoft-Windows-AAD%4Operational.evtx 至 Microsoft-Windows-WWAN-SVC-Events%4Operational.evtx 的条目,其余条目删除。
由于文件路径不能包含/字符,所以,微软将/代替为%4,我们需要将 List.txt 当中所有的 %4 替换为 /,并把后缀名统一删除。
而后,我们还要在每一行的首和尾,分别插入 wevtutil sl ” 和 ” /e:false
最终结果如下图所示。

这里写图片描述

也可将该文件另存为cmd文件,并以管理员身份运行,即可执行日志一键禁用。

四、一键清空日志记录

参阅文档可知, 禁用指定系统日志项目的 Cmd 命令语法为

wevtutil cl "日志条目全名"
  • 1

1.管理员身份运行Cmd。
2.输入

Cd C:\Windows\System32\winevt\Logs
  • 1

3.回车
4.再输入

Dir *.* /B >D:\List.txt
  • 1

5.回车
然后,就会在 D 盘根目录下多出一个 List.txt,将 List.txt 当中所有的 %4 替换为 /,并把后缀名统一删除。由于是清空日志,我们可以将所有 evtx 都包含进去。
而后,我们还要在每一行的首和尾,分别插入 wevtutil cl ” 和 ”
最终结果如下图所示。

这里写图片描述

五、结束语

文章借助以下三个 Cmd 命令,实现了系统日志的一键禁用和一键清空,具有操作便捷、运行高效的优势。

获取日志条目:
Cd C:\Windows\System32\winevt\Logs
Dir *.* /B >D:\List.txt
  • 1
  • 2
  • 3
禁用日志记录:
wevtutil sl "日志条目全名" /e:false
  • 1
  • 2
清空日志事件:
wevtutil cl "日志条目全名"
上一篇
下一篇