windows - 如何清除 Windows 事件日志而不显示任何错误消息?
问题描述
我正在创建一个 Windows 事件日志清除软件。
每当您从命令行清除日志时,总会有一些日志无法清除,因为较新版本的 Windows 不再使用这些日志原本用于的服务,或者它们是重要的系统日志几乎总是被写入。
但是,当 Windows 事件实用工具发现它无法清除这些日志时,它会向用户传递一条错误消息。而且因为我正在尝试将这个批处理文件制作成一个实际的软件,为了用户体验,我宁愿屏幕上没有一堆杂乱的错误消息。
这个问题的明显答案是让批处理文件启动一个单独的后台批处理脚本来清除日志,用户不会看到任何错误消息,但是现代防病毒真的不喜欢批处理脚本,并且几乎每次都标记它们,所以我不能这样做。
我尝试创建一个 powershell 脚本(更受防病毒软件的信任)来清除日志。但是由于powershell的特性,即使完全在后台运行,没有控制台,它仍然会以VBS XMessages的形式传递错误信息。
如果它有任何用处,这是 powershell 脚本中的两行代码:
wevtutil el | Foreach-Object {wevtutil cl "$_"}
exit
对于那些想知道的人,是的,我正在使用管理权限清除日志。
我需要以下之一:
清除 Windows 事件日志的另一种方法,它不显示错误消息,我可以将其集成到我正在创建的软件中。
一种强制清除通常无法清除的 Windows 事件日志的方法。
一种在防病毒软件中风的情况下运行批处理脚本的方法。
一种使 powershell 脚本完全在后台运行的方法,而不会显示错误消息。
解决方案
对于碰巧偶然发现这个问题的任何人,答案在评论部分,因为要归功于@vonPryz,他提到这Clear–EventLog
会比 更好wevtutil
,而且确实如此。
推荐阅读
- c# - 如何仅在 Word 表格单元格中选择文本
- android - 在 Kotlin 改造中调用函数作为发送参数的问题
- discord.js - 我将如何获取 30 天前的旧嵌入消息并结合这些值 [Discord.js V12]
- python - 我怎么能用图像添加这些按钮?
- git - 在早期 git commit 中撤消对单个文件的修改?
- google-apps-script - 您无法删除工作表 Google Sheets Script 上的所有行
- html - 使用 CSS 选择器 .last-child :在不处理面包屑之后
- vue.js - 在 vuejs 中传递值?
- java - Java Discord Bot (JDA) 检查是否固定
- python - python dataframe - 根据另一列中的子字符串条件创建新列