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