我有一个应用程序创建了许多自定义事件日志源来帮助过滤其输出.如何在不编写任何代码的情况下从机器中删除自定义源代码,因为使用System.Diagnostics.EventLog.Delete运行快速程序是不可能的.
我已经尝试使用RegEdit从[HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Eventlog]中删除自定义源,但是应用程序的行为就好像日志仍然存在于幕后.
我还缺少什么?
我也认为你在正确的地方......它以事件日志的名义存储在注册表中.我有一个自定义事件日志,下面是多个事件源.
HKLM\System\CurrentControlSet\Services\Eventlog\LOGNAME\LOGSOURCE1 HKLM\System\CurrentControlSet\Services\Eventlog\LOGNAME\LOGSOURCE2
这些源有一个EventMessageFile键,它是REG_EXPAND_SZ并指向:
C:\ WINDOWS\Microsoft.NET \框架\ V2.0.50727\EventLogMessages.dll
我想如果你删除作为日志源的Key,在我的例子中是LOGSOURCE1,那应该是所有需要的.
对于它的价值,我通过.NET尝试了它,这就是它的作用.但是,看起来每个自定义事件日志都具有相同名称的源.如果您有自定义日志,则可能会影响您清除它的能力.你可能必须彻底删除日志.此外,如果您的应用程序有安装程序,我可以看到应用程序名称也可能在应用程序事件日志中注册为源.还有一个要清楚的地方.
使用Powershell怎么样?
Remove-EventLog -LogName "Custom log name" Remove-EventLog -Source "Custom source name"
我只能通过使用以下方法删除它:
[System.Diagnostics.EventLog]::Delete("WrongNamedEventLog");
在powershell中