Condividi tramite


Monitoraggio dell'uscita del processo invisibile all'utente

A partire da Windows 7, è possibile usare la scheda Esci dal processo invisibile all'utente in GFlags per immettere il nome di un processo da monitorare per l'uscita invisibile all'utente.

Nel contesto di questa funzionalità di monitoraggio, si usa il termine uscita invisibile all'utente per indicare che il processo monitorato termina in uno dei modi seguenti.

Terminazione automatica

Il processo monitorato termina chiamando ExitProcess.

Terminazione tra processi

Un secondo processo termina il processo monitorato chiamando TerminateProcess.

La funzionalità di monitoraggio non rileva la normale terminazione del processo che si verifica quando l'ultimo thread del processo viene chiuso. La funzionalità di monitoraggio non rileva la terminazione del processo avviata dal codice in modalità kernel.

Per registrare un processo per il monitoraggio di uscita invisibile all'utente, aprire la scheda Uscita processo invisibile all'utente in GFlags. Immettere il nome del processo come immagine e premere tabulazione . Selezionare la casella Abilita monitoraggio processo invisibile all'utente e selezionare Applica. Questo imposta il flag di FLG_MONITOR_SILENT_PROCESS_EXIT nella voce del Registro di sistema seguente.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Opzioni di esecuzione file immagine\ProcessName\GlobalFlag

Per altre informazioni su questo flag, vedere Abilitare il monitoraggio dell'uscita del processo invisibile all'utente.

Per altre informazioni sull'uso della scheda Uscita processo invisibile all'utente in GFlags, vedere Configurazione del monitoraggio dell'uscita del processo invisibile all'utente.

Nella scheda Uscita processo invisibile all'utente di GFlags è possibile configurare le azioni che verranno eseguite quando un processo monitorato viene chiuso in modo invisibile all'utente. È possibile configurare notifiche, registrazione eventi e creazione di file di dump. È possibile specificare un processo che verrà avviato quando viene rilevato l'uscita invisibile all'utente e è possibile specificare un elenco di moduli ignorati dal monitoraggio. Diverse di queste impostazioni sono disponibili sia a livello globale che per le singole applicazioni. Le impostazioni globali si applicano a tutti i processi registrati per il monitoraggio di uscita invisibile all'utente. Le impostazioni dell'applicazione si applicano a un singolo processo ed esegue l'override delle impostazioni globali.

Le impostazioni globali vengono archiviate nel Registro di sistema nella chiave seguente.

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

Le impostazioni dell'applicazione vengono archiviate nel Registro di sistema nella chiave seguente.

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

Modalità di creazione report

L'impostazione Modalità report è disponibile come impostazione dell'applicazione, ma non come impostazione globale. È possibile usare le caselle di controllo seguenti per impostare la modalità di report.

Avviare il processo di monitoraggioAbilita raccolta dump Abilitarela notifica La voce del Registro di sistema ReportingMode è un or bit per bit dei flag seguenti.

Flag valore Significato
LAUNCH_MONITORPROCESS 0x1 Quando viene rilevata l'uscita invisibile all'utente, viene avviato il processo di monitoraggio (specificato nella casella Processo di monitoraggio ).
LOCAL_DUMP 0x2 Quando viene rilevata l'uscita invisibile all'utente, viene creato un file dump per il processo monitorato. Nel caso della terminazione tra processi, viene creato anche un file dump per il processo che ha causato la terminazione.
NOTIFICA 0x4 Quando viene rilevata l'uscita invisibile all'utente, viene visualizzata una notifica popup.

Ignorare l'uscita automatica

L'impostazione Ignora uscita automatica è disponibile come impostazione dell'applicazione, ma non come impostazione globale. È possibile usare la casella di controllo Ignora uscita automatica per specificare se le uscite self-exit vengono ignorate.

La voce del Registro di sistema IgnoreSelfExits ha uno dei valori seguenti.

Valore Significato
0x0 Rilevare e rispondere alla terminazione automatica e alla terminazione tra processi.
0x1 Ignorare la terminazione automatica. Rilevare e rispondere alla terminazione tra processi.

Processo di monitoraggio

È possibile specificare un processo di monitoraggio immettendo un nome di processo, insieme ai parametri della riga di comando, nella casella di testo Monitoraggio Processo . È possibile usare le variabili seguenti nella riga di comando.

Varaible Significato
%e ID del processo di uscita. Si tratta del processo monitorato che ha chiuso in modo silenzioso.
%i ID del processo di avvio. Nel caso di auto terminazione, si tratta dello stesso processo di uscita. Nel caso della terminazione tra processi, si tratta dell'ID del processo che ha causato la terminazione.
%t ID del thread di avvio. Si tratta del thread che ha causato la terminazione.
%c Codice di stato passato a ExitThread o TerminateThread .

Ad esempio, il valore seguente per Il processo di monitoraggio specifica che in uscita invisibile all'utente, WinDbg viene avviato e collegato al processo di uscita.

windbg -p %e

La riga di comando Del processo di monitoraggio viene archiviata nella voce del Registro di sistema MonitorProcess .

Percorso cartella dump

È possibile usare la casella di testo Percorso cartella Dump per specificare un percorso per i file di dump scritti quando viene rilevata un'uscita invisibile all'utente.

La stringa immessa per il percorso della cartella Dump viene archiviata nella voce del Registro di sistema LocalDumpFolder .

Se non si specifica un percorso di cartella dump, i file di dump vengono scritti nel percorso predefinito, ovvero %TEMP%\Silent Process Exit.

Dimensioni della cartella dump

È possibile usare la casella di testo Dimensione cartella Dump per specificare il numero massimo di file di dump che possono essere scritti nella cartella dump. Immettere questo valore come intero decimale.

Il valore immesso per le dimensioni della cartella Dump viene archiviato nella voce del Registro di sistema MaxNumberOfDumpFiles .

Per impostazione predefinita, esiste un limite di dieci file di dump che possono essere scritti.

Tipo di dump

È possibile usare l'elenco a discesa Tipo di dump per specificare il tipo di file di dump (Micro, Mini, Heap o Custom) scritto quando viene rilevata un'uscita invisibile all'utente.

Il tipo di dump viene archiviato nella voce del Registro di sistema DumpType , ovvero un OR bit per bit dei membri dell'enumerazione MINIDUMP_TYPE . Questa enumerazione è definita in dbghelp.h, inclusa nel pacchetto Debug Tools for Windows.

Si supponga, ad esempio, di scegliere un tipo di dump di Micro e si noterà che la voce del Registro di sistema DumpType ha un valore di 0x88. Il valore 0x88 è un OR bit per bit dei due valori di enumerazione seguenti MINIDUMP_TYPE .

MiniDumpFilterModulePaths: 0x00000080

MiniDumpFilterMemory: 0x00000008

Se si sceglie un tipo di dump personalizzato, immettere il proprio OR bit per bit di valori di enumerazione MINIDUMP_TYPE nella casella Tipo di dump personalizzato . Immettere questo valore come intero decimale.

Elenco ignora modulo

È possibile usare la casella Elenco ignora modulo per specificare un elenco di moduli che verranno ignorati quando viene rilevata un'uscita invisibile all'utente. Se il processo monitorato viene terminato da uno dei moduli in questo elenco, l'uscita invisibile all'utente viene ignorata.

L'elenco dei moduli immessi nella casella Elenco Ignora modulo viene archiviato nella voce del Registro di sistema ModuleIgnoreList .

Lettura dei report di uscita dal processo in Visualizzatore eventi

Quando un processo monitorato viene chiuso in modo invisibile all'utente, il monitoraggio crea una voce in Visualizzatore eventi. Per aprire Visualizzatore eventi, immettere il comando eventvwr.msc. Passare all'applicazione Log > di Windows. Cercare le voci di log con source of Process Exit Monitor.

Finestra di dialogo Proprietà evento con scheda Generale, che visualizza l'origine come Monitoraggio uscita processo.