Проблема при доступе/записи в EventLog
Я работаю с каким-то старым кодом (и, откровенно говоря, не знаю, что он делает), пытаясь переместить его в IIS7.
Одна из проблем, которые я вижу, заключается в том, что я получаю эту ошибку:
[SecurityException: источник не найден, но некоторые или все журналы событий не могут быть найдены. Недостижимые журналы: безопасность.]
Если я перейду вручную в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security и установите для этого ключа (Security) разрешение, чтобы у "Everyone" был полный доступ, это не пропало без проблем. Но, очевидно, это не оптимальное решение.
Кто-нибудь знает лучший способ удалить это исключение?
Ответы
Ответ 1
Один из способов исправить это - запустить простое консольное приложение под полным доверием, которое записывает одну запись EventLog под именем источника-нарушителя. Вам нужно будет сделать это один раз для каждого сервера.
С этого момента вы должны иметь возможность регистрироваться под этим именем источника. (по крайней мере, это было мое наблюдение.) Это просто создание неизвестного источника, из которого нельзя сделать из-под ASP.NET, запись в существующий источник не должна быть проблемой.
Вопрос: знаете ли вы имя источника? Если вы этого не сделаете, временно предоставите доступ всем, дождитесь сообщения журнала и удалите всех. Также следует работать.
Официальным способом Microsoft является создание установщика, который регистрирует источник журнала событий.
Ответ 2
От этот поток:
Метод EventLog.CreateEventSource() попытки поиска источников событий в все журналы событий, а не только журнал событий для которого вы хотите создать источник. Существует два решения это. Первый, самый простой и самый небезопасно, просто дать чтение/запись доступ ко всем журналам событий для Учетная запись ASP.NET.
Также предоставляются код и другие решения.