Поделиться через


Мониторинг выхода автоматического процесса

Начиная с Windows 7, вы можете использовать вкладку Автоматическое завершение процесса в GFlags, чтобы ввести имя процесса, который требуется отслеживать для автоматического выхода.

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

Самостоятельное завершение

Отслеживаемый процесс завершается путем вызова ExitProcess.

Завершение перекрестного процесса

Второй процесс завершает отслеживаемый процесс путем вызова TerminateProcess.

Функция мониторинга не обнаруживает нормальное завершение процесса, которое происходит при выходе из последнего потока процесса. Функция мониторинга не обнаруживает завершение процесса, инициированное кодом в режиме ядра.

Чтобы зарегистрировать процесс для мониторинга автоматического выхода, откройте вкладку Автоматический выход из процесса в GFlags. Введите имя процесса в поле Изображение и нажмите клавишу TAB . Установите флажок Включить мониторинг выхода из автоматического процесса и нажмите кнопку Применить. Это задает флаг FLG_MONITOR_SILENT_PROCESS_EXIT в следующей записи реестра.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ProcessName\GlobalFlag

Дополнительные сведения об этом флаге см. в разделе Включение автоматического мониторинга выхода из процесса.

Дополнительные сведения об использовании вкладки "Автоматический выход из процесса " в GFlags см. в разделе Настройка мониторинга выхода из автоматического процесса.

На вкладке Автоматическое завершение процесса GFlags можно настроить действия, которые будут выполняться при автоматическом завершении отслеживаемого процесса. Вы можете настроить уведомления, ведение журнала событий и создание файлов дампа. Можно указать процесс, который будет запускаться при обнаружении автоматического выхода, а также указать список модулей, которые монитор будет игнорировать. Некоторые из этих параметров доступны как глобально, так и для отдельных приложений. Глобальные параметры применяются ко всем процессам, зарегистрированным для автоматического мониторинга выхода. Параметры приложения применяются к отдельному процессу и переопределяют глобальные параметры.

Глобальные параметры хранятся в реестре в следующем разделе.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit

Параметры приложения хранятся в реестре в следующем разделе.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ProcessName

Режим отчетов

Параметр Режим отчетов доступен как параметр приложения, но не как глобальный параметр. Для настройки режима создания отчетов можно использовать следующие поля проверка.

Запуск процесса мониторингаВключение сбора дамповВключить уведомление Включить Запись реестра ReportingMode представляет собой побитовую или из следующих флагов.

Флаг Значение Значение
LAUNCH_MONITORPROCESS 0x1 При обнаружении автоматического выхода запускается процесс мониторинга (указанный в поле Процесс мониторинга ).
LOCAL_DUMP 0x2 При обнаружении автоматического выхода создается файл дампа для отслеживаемого процесса. В случае завершения нескольких процессов также создается файл дампа для процесса, вызвавшего завершение.
УВЕДОМЛЕНИЯ 0x4 При обнаружении автоматического выхода отображается всплывающее уведомление.

Игнорировать самостоятельные выходы

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

Запись реестра IgnoreSelfExits имеет одно из следующих значений.

Значение Значение
0x0 Обнаружение и реагирование на самостоятельное завершение и завершение перекрестного процесса.
0x1 Игнорировать самостоятельное завершение. Обнаружение завершения перекрестного процесса и реагирование на них.

Мониторинг процесса

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

Varaible Значение
%e Идентификатор процесса выхода. Это отслеживаемый процесс, который завершился автоматически.
%i Идентификатор инициирующего процесса. В случае самостоятельного завершения это то же самое, что и процесс выхода. В случае завершения перекрестного процесса это идентификатор процесса, вызвавшего завершение.
%t Идентификатор инициирующего потока. Это поток, который вызвал завершение.
%c Код состояния, передаваемый в ExitThread или TerminateThread .

Например, следующее значение для monitor Process указывает, что при автоматическом выходе WinDbg запускается и присоединяется к процессу выхода.

windbg -p %e

Командная строка Процесса мониторинга хранится в записи реестра MonitorProcess .

Расположение папки дампа

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

Строка, введенная в поле Расположение папки дампа , хранится в записи реестра LocalDumpFolder .

Если расположение папки дампа не указано, файлы дампа записываются в расположение по умолчанию— %TEMP%\Silent Process Exit.

Размер папки дампа

Чтобы указать максимальное количество файлов дампа, которые можно записать в папку дампа, можно использовать текстовое поле Размер папки дампа . Введите это значение как десятичное целое число.

Значение, введенное для параметра Размер папки дампа , хранится в записи реестра MaxNumberOfDumpFiles .

По умолчанию существует ограничение в десять файлов дампа, которые можно записать.

Тип дампа

В раскрывающемся списке Тип дампа можно указать тип файла дампа (Micro, Mini, Heap или Custom), который записывается при обнаружении автоматического выхода.

Тип дампа хранится в записи реестра DumpType , которая представляет собой побитовую ИЛИ членов перечисления MINIDUMP_TYPE . Это перечисление определено в файле dbghelp.h, который входит в пакет средств отладки для Windows.

Например, предположим, что вы выбрали тип дампа Micro и видите, что запись реестра DumpType имеет значение 0x88. Значение 0x88 представляет собой побитовое ЗНАЧЕНИЕ ИЛИ из двух следующих MINIDUMP_TYPE значений перечисления.

MiniDumpFilterModulePaths: 0x00000080

MiniDumpFilterMemory: 0x00000008

Если выбран тип дампа Custom, введите собственные побитовые или значения перечисления MINIDUMP_TYPE в поле Тип пользовательского дампа . Введите это значение как десятичное целое число.

Список игнорируемого модуля

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

Список модулей, указанный в поле Список игнорируемых модулей , хранится в записи реестра ModuleIgnoreList .

Чтение отчетов о выходе из процесса в Просмотр событий

Когда отслеживаемый процесс завершается автоматически, монитор создает запись в Просмотр событий. Чтобы открыть Просмотр событий, введите команду eventvwr.msc. Перейдите в раздел Приложение журналов > Windows. Найдите записи журнала с монитором выхода из источника процесса.

Диалоговое окно свойств события с вкладкой Общие, где источник отображается как монитор завершения процесса.