45

出力をフィルタリングするために多数のカスタム イベント ログ ソースを作成したアプリケーションがあります。System.Diagnostics.EventLog.Delete を使用して簡単なプログラムを実行することはできないため、コードを記述せずにマシンからカスタム ソースを削除するにはどうすればよいですか。

RegEdit を使用して [HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Eventlog] からカスタム ソースを削除しようとしましたが、アプリケーションはログがまだ背後に存在するかのように動作します。

他に何が欠けていますか?

4

4 に答える 4

50

また、適切な場所にいると思います...イベントログの名前でレジストリに保存されています。カスタム イベント ログがあり、その下に複数のイベント ソースがあります。

HKLM\System\CurrentControlSet\Services\Eventlog\LOGNAME\LOGSOURCE1 HKLM\System\CurrentControlSet\Services\Eventlog\LOGNAME\LOGSOURCE2

これらのソースには、REG_EXPAND_SZであり、次を指すEventMessageFileキーがあります。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

ログ ソースであるキー (この例では LOGSOURCE1) を削除すれば、それで十分だと思います。

価値があるのは、.NETで試してみたところ、それがうまくいったことです。ただし、各カスタム イベント ログにも同じ名前のソースがあるようです。カスタム ログがある場合は、それをクリアする能力に影響する可能性があります。おそらく、ログを完全に削除する必要があります。さらに、アプリにインストーラーがある場合、アプリケーション名もアプリケーション イベント ログにソースとして登録されている可能性があります。もう一ヶ所クリア。

于 2008-09-24T17:55:19.003 に答える
36

Powershellの使用はどうですか?

Remove-EventLog -LogName "Custom log name"

Remove-EventLog -Source "Custom source name"
于 2015-03-06T16:12:20.440 に答える
6

次を使用してのみ削除できました。

[System.Diagnostics.EventLog]::Delete("WrongNamedEventLog");

パワーシェルで

于 2016-05-24T14:40:56.223 に答える
3

おそらく、アプリケーションはフォールトトレラントです。つまり、イベントログソースがすでに登録されているかどうかを確認し、登録されていない場合はソースを登録しますか?

この場合、アプリケーションは、実行するたびに、何をしたかに関係なく、ソースを再作成します。

于 2008-09-24T15:46:44.070 に答える