Проблема при попытке использования метода EventLog.SourceExists в .NET.
Я пытаюсь использовать eventlogs в своем приложении с помощью С#, поэтому я добавил следующий код
if (!EventLog.SourceExists("SomeName"))
EventLog.CreateEventSource("SomeName", "Application");
EventLog.SourceExists вызывает SecurityException, в котором говорится:
"Источник не найден, но некоторые или все журналы событий не могут быть найдены. Недоступные журналы: Безопасность.
Я запускаюсь как администратор в Windows 7.
Любая помощь будет назначена.
Ответы
Ответ 1
Это проблема с разрешениями - вы должны дать текущему пользователю разрешение на чтение следующего раздела реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog
Alternaitvely вы можете bypas CreateEventSource
удалить необходимость доступа к этому разделу реестра.
Оба решения более подробно объясняются в следующем потоке - Как создать источник журнала событий в Vista?.
Ответ 2
Короткий совет:
Один источник событий регистрируется во время установки службы (если приложение является службой Windows) и может использоваться без исключения безопасности с низкопрофильным владельцем процесса (не администратором)
Я выполняю установку/запуск службы с кодом С# типичным способом из SO/MSDN
Важным является свойство ServiceName
в классе System.ServiceProcess.ServiceBase
.