不使用代码删除自定义事件日志源

我有一个应用程序已经创build了一些自定义事件日志源来帮助过滤它的输出。 我怎样才能从机器删除自定义源,而无需编写任何代码作为运行使用System.Diagnostics.EventLog.Delete快速程序是不可能的。

我已经尝试使用RegEdit从[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog]中删除自定义源,但应用程序的行为就好像日志在幕后仍然存在。

我还有什么遗漏?

我也认为你是在正确的地方…它存储在registry中,在事件日志的名称。 我有一个自定义事件日志,下面是多个事件源。

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中

也许你的应用程序是容错的,这意味着它检查事件日志源是否已经注册,如果不是,注册源?

如果是这种情况,那么无论您做什么,您的应用程序都会在每次运行时重新创build源代码。