C # EventLog Недоступный журнал - PullRequest
12 голосов
/ 11 января 2012

Ниже приведено исключение, с которым я столкнулся при запуске следующего кода:

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

Код

if (!EventLog.SourceExists(this.EventLogSource))

Содержание исключения имеет для меня смысл, поэтому это не так. Эта строка работает в Visual Studio 2010, .NET 4 как консольное приложение (пока). Я запустил это в другой среде, но я не ожидал, что удаленный стол сломает этот метод. Я попытался изменить разрешения HKML\CCS\Services\eventlog - безрезультатно, а также разрешения C:\Windows\System32\Winevt\Logs\Security.evtx. Опять безрезультатно.

У меня следующие вопросы:

  1. Почему нет переопределения для игнорирования безопасных журналов,
  2. Как я могу обойти это (программно)
  3. Это потому, что я удаленный рабочий стол.

Любой совет был бы великолепен.

Ответы [ 3 ]

17 голосов
/ 11 января 2012

Microsoft требует, чтобы вы были администратором для выполнения этого метода по той самой причине, которую вы нашли.

Вот их объяснение (из документации MSDN ):

Для поиска источника событий в Windows Vista и более поздних версиях или Windows Server 2003 у вас должны быть права администратора.

Причина этого требования заключается в том, что все журналы событий, включая безопасность, должны быть найдены, чтобы определить, является ли источник события уникальным. Начиная с Windows Vista, пользователи не имеют прав доступа к журналу безопасности; поэтому выдается исключение SecurityException.

То, как вы ее обойдете, будет полностью зависеть от того, что именно вам нужно делать. Лучшая рекомендация, если вы не можете войти в систему как администратор, - это попытаться выполнить свое действие в блоке try / catch, а если выдается исключение SecurityException, выполнить какое-то альтернативное действие.

8 голосов
/ 11 января 2012

Доступ к некоторым EventLogs требует повышения прав.Запустите приложение от имени администратора.

0 голосов
/ 11 января 2012

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

Начать чтение с здесь

...