web-dev-qa-db-ja.com

コードを使用せずにカスタムイベントログソースを削除する

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

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

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

40
Wolfwyrd

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

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

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

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

42
Mike L

Powershell の使用についてはどうですか?

Remove-EventLog -LogName "Custom log name"

Remove-EventLog -Source "Custom source name"
35
Kapé

私はそれを使用してそれを削除することしかできませんでした:

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

powerShellで

5
Moondustt

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

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

3
MusiGenesis