Проблема при доступе/записи в EventLog

Я работаю с каким-то старым кодом (и, откровенно говоря, не знаю, что он делает), пытаясь переместить его в IIS7.

Одна из проблем, которые я вижу, заключается в том, что я получаю эту ошибку:

[SecurityException: источник не найден, но некоторые или все журналы событий не могут быть найдены. Недостижимые журналы: безопасность.]

Если я перейду вручную в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security и установите для этого ключа (Security) разрешение, чтобы у "Everyone" был полный доступ, это не пропало без проблем. Но, очевидно, это не оптимальное решение.

Кто-нибудь знает лучший способ удалить это исключение?

Ответ 1

Один из способов исправить это - запустить простое консольное приложение под полным доверием, которое записывает одну запись EventLog под именем источника-нарушителя. Вам нужно будет сделать это один раз для каждого сервера.

С этого момента вы должны иметь возможность регистрироваться под этим именем источника. (по крайней мере, это было мое наблюдение.) Это просто создание неизвестного источника, из которого нельзя сделать из-под ASP.NET, запись в существующий источник не должна быть проблемой.

Вопрос: знаете ли вы имя источника? Если вы этого не сделаете, временно предоставите доступ всем, дождитесь сообщения журнала и удалите всех. Также следует работать.

Официальным способом Microsoft является создание установщика, который регистрирует источник журнала событий.

Ответ 2

От этот поток:

Метод EventLog.CreateEventSource() попытки поиска источников событий в все журналы событий, а не только журнал событий для которого вы хотите создать источник. Существует два решения это. Первый, самый простой и самый небезопасно, просто дать чтение/запись доступ ко всем журналам событий для Учетная запись ASP.NET.

Также предоставляются код и другие решения.