Удаление пользовательского источника журнала событий без использования кода - PullRequest
39 голосов
/ 24 сентября 2008

У меня есть приложение, которое создало несколько пользовательских источников журнала событий, чтобы помочь отфильтровать его вывод. Как я могу удалить пользовательские источники с машины БЕЗ написания какого-либо кода, так как запуск быстрой программы с использованием System.Diagnostics.EventLog.Delete невозможен.

Я пытался использовать RegEdit для удаления пользовательских источников из [HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog], однако приложение работает так, как будто журналы все еще существуют за кулисами.

Что еще мне не хватает?

Ответы [ 4 ]

42 голосов
/ 24 сентября 2008

Я также думаю, что вы находитесь в правильном месте ... он хранится в реестре, под именем журнала событий. У меня есть собственный журнал событий, в котором находятся несколько источников событий.

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, и это то, что он сделал. Тем не менее, похоже, что каждый пользовательский журнал событий также имеет источник с таким же именем. Если у вас есть собственный журнал, это может повлиять на вашу способность очищать его. Возможно, вам придется удалить журнал сразу. Кроме того, если у вашего приложения есть установщик, я вижу, что имя приложения также может быть зарегистрировано в качестве источника в журнале событий приложения. Еще одно место, чтобы очистить.

32 голосов
/ 06 марта 2015

Как насчет использования Powershell ?

Remove-EventLog -LogName "Custom log name"

Remove-EventLog -Source "Custom source name"
5 голосов
/ 24 мая 2016

Я смог удалить его только с помощью:

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

в PowerShell

3 голосов
/ 24 сентября 2008

Возможно, ваше приложение отказоустойчиво, то есть оно проверяет, зарегистрирован ли источник журнала событий, и регистрирует источник, если это не так?

Если бы это было так, ваше приложение будет заново создавать источник (источники) при каждом запуске, независимо от того, что вы сделали.

...