Подтвердить что ты не робот

Проблема при попытке использования метода EventLog.SourceExists в .NET.

Я пытаюсь использовать eventlogs в своем приложении с помощью С#, поэтому я добавил следующий код

if (!EventLog.SourceExists("SomeName"))
EventLog.CreateEventSource("SomeName", "Application");

EventLog.SourceExists вызывает SecurityException, в котором говорится: "Источник не найден, но некоторые или все журналы событий не могут быть найдены. Недоступные журналы: Безопасность.

Я запускаюсь как администратор в Windows 7.

Любая помощь будет назначена.

4b9b3361

Ответ 1

Это проблема с разрешениями - вы должны дать текущему пользователю разрешение на чтение следующего раздела реестра:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog

Alternaitvely вы можете bypas CreateEventSource удалить необходимость доступа к этому разделу реестра.

Оба решения более подробно объясняются в следующем потоке - Как создать источник журнала событий в Vista?.

Ответ 2

Короткий совет:

Один источник событий регистрируется во время установки службы (если приложение является службой Windows) и может использоваться без исключения безопасности с низкопрофильным владельцем процесса (не администратором)

Я выполняю установку/запуск службы с кодом С# типичным способом из SO/MSDN

Важным является свойство ServiceName в классе System.ServiceProcess.ServiceBase.