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

时间:2020-03-06 14:40:16  来源:igfitidea点击:

我有一个应用程序,该应用程序创建了许多自定义事件日志源来帮助过滤其输出。如何使用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\Framework\v2.0.50727\EventLogMessages.dll

我认为,如果删除作为日志源的Key(在我的示例中为LOGSOURCE1),则应仅此而已。

对于它的价值,我通过.NET进行了尝试,这就是它的作用。但是,看起来每个自定义事件日志也确实具有相同名称的来源。如果我们有一个自定义日志,那可能会影响我们清除它的能力。也许我们必须彻底删除日志。此外,如果应用程序具有安装程序,则可以看到该应用程序名称也可能已在应用程序事件日志中注册为源。还有一个地方要清除。