Compartir a través de


Supervisión de la salida del proceso silencioso

A partir de Windows 7, puedes usar la pestaña Salida silenciosa del proceso en GFlags para escribir el nombre de un proceso que quieres supervisar para la salida silenciosa.

En el contexto de esta característica de supervisión, usamos el término salida silenciosa para significar que el proceso supervisado finaliza de una de las maneras siguientes.

Finalización automática

El proceso supervisado finaliza a sí mismo llamando a ExitProcess.

Terminación entre procesos

Un segundo proceso finaliza el proceso supervisado llamando a TerminateProcess.

La característica de supervisión no detecta la finalización normal del proceso que se produce cuando se cierra el último subproceso del proceso. La característica de supervisión no detecta la finalización del proceso iniciada por el código en modo kernel.

Para registrar un proceso de supervisión de salida silenciosa, abra la pestaña Salida silenciosa del proceso en GFlags. Escriba el nombre del proceso como Imagen y presione la tecla Tab . Active la casilla Habilitar supervisión de salida de procesos silenciosos y seleccione Aplicar. Esto establece la marca FLG_MONITOR_SILENT_PROCESS_EXIT en la siguiente entrada del Registro.

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

Para obtener más información sobre esta marca, consulte Habilitación de la supervisión de salida de procesos silenciosos.

Para obtener más información sobre el uso de la pestaña Salida silenciosa de procesos en GFlags, vea Configuring Silent Process Exit Monitoring.

En la pestaña Salida silenciosa del proceso de GFlags, puede configurar las acciones que se realizarán cuando un proceso supervisado salga de forma silenciosa. Puede configurar la notificación, el registro de eventos y la creación de archivos de volcado de memoria. Puede especificar un proceso que se iniciará cuando se detecte una salida silenciosa y puede especificar una lista de módulos que omitirá el monitor. Varias de estas opciones están disponibles globalmente y para aplicaciones individuales. La configuración global se aplica a todos los procesos que se registran para la supervisión silenciosa de la salida. La configuración de la aplicación se aplica a un proceso individual e invalida la configuración global.

La configuración global se almacena en el Registro bajo la siguiente clave.

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

La configuración de la aplicación se almacena en el Registro bajo la siguiente clave.

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

Modo de informes

La configuración modo de informes está disponible como una configuración de aplicación, pero no como una configuración global. Puede usar las siguientes casillas para establecer el modo de informes.

Iniciar proceso de supervisiónHabilitar recopilación de volcado Habilitarnotificación La entrada del Registro ReportingMode es un OR bit a bit de las marcas siguientes.

Marca Value Significado
LAUNCH_MONITORPROCESS 0x1 Cuando se detecta una salida silenciosa, se inicia el proceso de supervisión (especificado en el cuadro Proceso de supervisión ).
LOCAL_DUMP 0x2 Cuando se detecta una salida silenciosa, se crea un archivo de volcado para el proceso supervisado. En el caso de la finalización entre procesos, también se crea un archivo de volcado para el proceso que provocó la finalización.
NOTIFICATION 0x4 Cuando se detecta una salida silenciosa, se muestra una notificación emergente.

Omitir salidas automáticas

La opción Omitir salidas automáticas está disponible como una configuración de aplicación, pero no como una configuración global. Puede usar la casilla Omitir salidas automáticas para especificar si se omiten las salidas automáticas.

La entrada del Registro IgnoreSelfExits tiene uno de los valores siguientes.

Valor Significado
0x0 Detecte y responda a la finalización automática y a la finalización entre procesos.
0x1 Omitir la finalización automática. Detecte y responda a la finalización entre procesos.

Supervisión del proceso

Para especificar un proceso de supervisión, escriba un nombre de proceso, junto con los parámetros de la línea de comandos, en el cuadro de texto Supervisar proceso . Puede usar las siguientes variables en la línea de comandos.

Varaible Significado
%e Identificador del proceso de salida. Este es el proceso supervisado que salió silenciosamente.
%i Identificador del proceso de inicio. En el caso de la finalización automática, es lo mismo que el proceso de salida. En el caso de la finalización entre procesos, este es el identificador del proceso que provocó la finalización.
%t Identificador del subproceso iniciador. Este es el subproceso que provocó la finalización.
%c Código de estado pasado a ExitThread o TerminateThread .

Por ejemplo, el siguiente valor para Proceso de supervisión especifica que, al salir en modo silencioso, se inicia WinDbg y se adjunta al proceso de salida.

windbg -p %e

La línea de comandos Supervisar proceso se almacena en la entrada del Registro MonitorProcess .

Ubicación de la carpeta de volcado

Puede usar el cuadro de texto Ubicación de la carpeta volcado para especificar una ubicación para los archivos de volcado de memoria que se escriben cuando se detecta una salida silenciosa.

La cadena que especifique para la ubicación de la carpeta Dump se almacena en la entrada del Registro LocalDumpFolder .

Si no especifica una ubicación de carpeta de volcado, los archivos de volcado se escriben en la ubicación predeterminada, que es %TEMP%\Silent Process Exit.

Tamaño de la carpeta de volcado

Puede usar el cuadro de texto Tamaño de carpeta de volcado de memoria para especificar el número máximo de archivos de volcado de memoria que se pueden escribir en la carpeta de volcado. Escriba este valor como un entero decimal.

El valor que especifique para El tamaño de la carpeta volcado se almacena en la entrada del Registro MaxNumberOfDumpFiles .

De forma predeterminada, hay un límite de diez archivos de volcado de memoria que se pueden escribir.

Tipo de volcado

Puede usar la lista desplegable Tipo de volcado de memoria para especificar el tipo de archivo de volcado (Micro, Mini, Montón o Personalizado) que se escribe cuando se detecta una salida silenciosa.

El tipo de volcado se almacena en la entrada del Registro DumpType , que es un OR bit a bit de los miembros de la enumeración MINIDUMP_TYPE . Esta enumeración se define en dbghelp.h, que se incluye en el paquete Herramientas de depuración para Windows.

Por ejemplo, supongamos que eligió un tipo de volcado de memoria micro y verá que la entrada del Registro DumpType tiene un valor de 0x88. El valor 0x88 es un OR bit a bit de los dos valores de enumeración siguientes MINIDUMP_TYPE .

MiniDumpFilterModulePaths: 0x00000080

MiniDumpFilterMemory: 0x00000008

Si elige un tipo de volcado de memoria personalizado, escriba su propio OR bit a bit de MINIDUMP_TYPE valores de enumeración en el cuadro Tipo de volcado de memoria personalizado . Escriba este valor como un entero decimal.

Lista de omitir módulos

Puede usar el cuadro Lista omitir módulo para especificar una lista de módulos que se omitirán cuando se detecte una salida silenciosa. Si uno de los módulos de esta lista finaliza el proceso supervisado, se omite la salida silenciosa.

La lista de módulos que escriba en el cuadro Lista de omitir módulos se almacena en la entrada del Registro ModuleIgnoreList .

Leer informes de salida de proceso en Visor de eventos

Cuando un proceso supervisado se cierra silenciosamente, el monitor crea una entrada en Visor de eventos. Para abrir Visor de eventos, escriba el comando eventvwr.msc. Vaya a Aplicación de registros de > Windows. Busque entradas de registro que tengan un monitor de salida de proceso de origen.

Cuadro de diálogo Propiedades del evento con la pestaña General, que muestra el origen como Monitor de salida del proceso.