Установление потребителя трассировки событий в реальном времени в Windows 10

Я пытаюсь использовать такие программы, как "Анализатор сообщений" и "TraceView", чтобы получать события от поставщиков "Microsoft-Windows-Security-Auditing" или "Microsoft-Windows-Eventlog", но мне не повезло с получением каких-либо событий.

Что я сделал:

  • Я тестировал эти программы в Windows 10 и 7
  • программное обеспечение выполняется от имени администратора
  • также как системный аккаунт

Другие наблюдения и вклад:

  • Я мог получить другие события, например, события ядра или события NDIS, но не упомянутые провайдеры, которые я специально настроил для получения.

  • Мне интересен подход, который использует упомянутое программное обеспечение (создание сеанса трассировки в реальном времени), и нет другого решения, такого как запрос событий...

ОБНОВЛЕНИЕ 1

GUID провайдера, который я использовал в упомянутом программном обеспечении

Microsoft-Windows-Security-Auditing: {54849625-5478-4994-A5BA-3E3B0328C30D}
Microsoft-Windows-Eventlog: {fc65ddd8-d6ef-4962-83d5-6e5cfe9ce148}

ОБНОВЛЕНИЕ 2

Я также провел больше исследований с EventLogChannelsView от NirSoft и некоторыми другими инструментами, я понял, что есть некоторые Каналы и Провайдеры / Издатели. Поставщики уведомляют любых потребителей, которые хотят знать о новых событиях на каналах.

Интересно, что EventLogChannelsView не перечислял имена некоторых провайдеров, что, вероятно, означает, что они вообще не активны (например, тот, который я упомянул). А также есть каналы, у которых нет провайдера.

Мне было любопытно, как Event Viewer узнает о новых событиях, потому что он мгновенно показывает сообщение "Новые события доступны". Что ж, я обнаружил, что Event Viewer использует API EvtSubscribe для получения событий на каналах вместо провайдеров.

Я не знаю, почему такие программы, как "Message Analyzer" и "TraceView", которые обе созданы Microsoft, очень сильно ошарашены состоянием провайдеров.

1 ответ

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

Для записи журналов событий в реальном времени я использую инструменты из WDK и SDK. Вы можете найти эти программы в %ProgramFiles(x86)%\Windows Kits\10\bin\<SDK-Version>\<bitness> дорожка. Вот два метода:

  • С интерфейсом командной строки: Запустите все команды от имени администратора. Поместите GUID в команду, как показано ниже.

    • Начните сеанс в реальном времени без сохранения файла ETL: tracelog.exe -start MyTraceSession -rt -guid #{place-guid-here}
    • Отображение журналов событий в режиме реального времени: tracefmt.exe -displayonly -rt MyTraceSession
    • Остановить сессию: tracelog.exe -stop MyTraceSession

Используемые варианты:

Usage: tracelog [actions] [options] | [-h | -help | -?]
-start         <LoggerName> Starts the <LoggerName> trace session.
-stop          <LoggerName> Stops the <LoggerName> trace session.
-guid #<guid>               Enable tracing for a provider by guid.
-rt                         Enable tracing in real time mode.

Usage: tracefmt [<EtlFile>|-rt [<SessionName>]] [-tmf [<TMFFiles>]|-p <TMFPath>|-pdb <PdbPath>] [Options]
-rt <SessionName> - Format messages from the named real-time trace session.
-displayonly      - Print formatted traces messages only to console (no output file).
  • С графическим интерфейсом пользователя: Дважды щелкните по программе TraceView, чтобы открыть. Выполните следующие действия: Файл> Создать новый сеанс журнала> GUID с ручным вводом элемента управления> ОК> Авто> Далее> Отображение в реальном времени> Готово.

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

Дальнейшие чтения:

Чтобы узнать, как и как эти инструменты работают с Windows API, см. Мой проект с открытым исходным кодом TraceEvent в GitHub.

Другие вопросы по тегам