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

С# EventLog Недоступный журнал

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

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

Код

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

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

Мои вопросы таковы:

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

Любые советы были бы замечательными.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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