在对写入事件日志的 C# 程序进行一些测试期间,我意外地在名为“mysb”的事件日志而不是“应用程序”事件日志中创建了一个事件源“mysb”。
现在我想摆脱错误创建的事件源,但由于它与事件日志同名,所以无法删除。
有什么办法可以消除源和事件日志 mysb?
看起来名称有点不同(我根据 C# 中的调用方式取了这些名称):源是“.Net 运行时”、“应用程序错误”、“组策略文件”... 而协议是“应用程序”、“安全”...
答案1
您可以使用 PowerShell 命令删除事件日志. 根据描述在 Microsoft 文档上:
Remove-EventLog cmdlet 从本地或远程计算机中删除事件日志文件,并取消注册日志的所有事件源。您还可以使用此 cmdlet 取消注册事件源而不删除任何事件日志。
(重点是我的)
从本地计算机删除事件日志的语法是:
Remove-EventLog -LogName "MyLog"
笔记:您必须从提升的命令提示符运行此程序。
答案2
正如 @memory-of-a-dream 在评论中注意到的那样,如果日志文件不存在,Remove-EventLog
则会出错并且无法删除该日志。
在这种情况下,有两个选择:
选项1
- 在日志所在的路径上创建一个空文件。该路径可以在 中找到
eventvwr.msc
。在有问题的日志上单击右键,选择“属性” - 重新启动 Eventlog 服务。如果无法重新启动,请重新启动系统
- 使用 删除日志
Remove-EventLog
。这次成功了
选项 2
删除描述损坏日志的注册表项:
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\EventLog\<Bad Log Name>"