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

Разрешения на запись в EventLog

Мой вопрос связан с правами на запись в журнал событий Windows. Я просмотрел несколько сообщений, рассказывающих об этом, и нашел некоторые способы решения моей проблемы, но ни один из них не подходит для моего текущего сценария.

Я использую С# в .NET 4.0. Я использую класс EventLog: Класс EventLog

Короче говоря, мне нужно выяснить, есть ли способ олицетворять или аутентифицировать аутентифицированный пользователь и пароль, чтобы достичь права, которое мне нужно записать в журнал событий. Сервер всегда будет в семействе Windows Server, но версия может отличаться.

Мое приложение - это служба Windows, работающая с одной из следующих учетных записей:

  • Сетевая служба
  • Локальная служба
  • Локальная система
  • Пользователь с ограниченными правами (пользователи или Группы пользователей домена)

Вот некоторые другие критерии, которые у меня есть:

  • Я не могу поместить пользователя службы в качестве администратора, даже локального администратора на сервере
  • Я не могу редактировать или изменять реестр
  • Я не могу изменить UAC или любые групповые политики на сервере
  • У меня есть пользователь с правами администратора, но он не может использоваться для запуска службы
  • Журнал событий всегда будет локальным журналом событий, а не на удаленном компьютере.
  • Журнал, вероятно, всегда будет журналом "Приложение"
  • Источник может отличаться, и это, по-видимому, является сердцем проблемы.

Мой вопрос: Возможно ли это?

Могу ли я выдавать себя за пользователя в моем коде для достижения того, что мне нужно? Я делаю это при подключении к веб-сервисам, входе на SMTP-серверы и в courseclogging в базы данных и т.д.

Я наткнулся на этот класс: Класс EventLogPermission

Но я не могу получить хорошую концепцию о том, как использовать класс.

Надеюсь, я выразил свою проблему хорошо. Я не рассматриваю это дубликат другого сообщения из-за моих критериев.

4b9b3361

Ответ 1

Ответ показал "нет".

Я понимаю, что нет хорошего способа решить это, как я просил. Должно быть выполнено ручное задание.

Таким образом, решение, которое я выбираю для этого сценария, заключается в том, что клиенты, которые не могут запускать службу в качестве администратора или выполнять ручное редактирование реестра, не могут использовать функции, связанные с протоколированием журнала событий. И я позволю включить и отключить ведение журнала из конфигурации.

Администратор и редактирование реестра - это известные способы для меня, но, как сказано, я пытался избежать. Но это, как кажется, невозможно в соответствии с моими критериями на этот раз.

Ответ 2

По умолчанию любой аутентифицированный пользователь может записывать в журнал событий приложения. Однако только администраторы могут создавать новые источники событий. Если все источники событий известны во время установки службы, я рекомендую заранее зарегистрировать эти источники, тогда вы все настроитесь. Регистрация - это простой вызов EventLog.CreateEventSource.

Если вам нужна дополнительная гибкость в источниках событий, вы можете настроить разрешения. Эти настройки по умолчанию можно настроить, настроив раздел реестра:

  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Application\CustomSD

Процесс, описанный в этой статье статьи KB. Инструмент wevtutil, который является частью ОС, доступный на сервере 2008 и выше, делает его немного легче, чем через regedit.