Condividi tramite


Monitoraggio dell'uscita del processo silenzioso

A partire da Windows 7, puoi usare la scheda Uscita silenziosa del processo in GFlags per inserire il nome di un processo che vuoi monitorare per l'uscita silenziosa.

Nel contesto di questa funzionalità di monitoraggio, viene usato il termine exit 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 terminazione normale del processo che si verifica quando termina l'ultimo thread del processo. La funzionalità di monitoraggio non rileva la terminazione del processo avviata dal codice in modalità kernel.

Per registrare un processo per il monitoraggio dell'uscita silenziosa, aprire la scheda Uscita Silenziosa Processo in GFlags. Immettere il nome del processo come Immagine e premere TAB . Selezionare la casella Abilita monitoraggio uscita processo invisibile all'utente e selezionare Applica. In questo modo viene impostato il flag FLG_MONITOR_SILENT_PROCESS_EXIT nella voce del Registro di sistema seguente.

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

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

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

Nella scheda Uscita silenziosa del processo di GFlags, è possibile configurare le azioni che verranno eseguite quando un processo monitorato si chiude in modo silenzioso. È possibile configurare notifiche, registrazione eventi e creazione di file di dump. È possibile specificare un processo che verrà avviato quando viene rilevata l'uscita invisibile all'utente ed è possibile specificare un elenco di moduli che verranno ignorati dal monitoraggio. Molte di queste impostazioni sono disponibili sia a livello globale che per le singole applicazioni. Le impostazioni globali si applicano a tutti i processi che registri per il monitoraggio dell'uscita silenziosa. Le impostazioni dell'applicazione si applicano a un singolo processo ed eseguono 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 utilizzare le caselle di controllo seguenti per impostare la modalità di creazione report.

Avvia processo di monitoraggioAbilita raccolta dumpAbilita notifica La voce di registro ReportingMode è una OR logica bit a bit dei seguenti flag.

Bandiera Valore Significato
AVVIO_MONITORAGGIOPROCEDURA 0x1 Quando viene rilevata l'uscita silenziosa, viene avviato il processo di monitoraggio (specificato nella casella Processo di monitoraggio).
LOCAL_DUMP 0x2 Quando viene rilevata l'uscita silenziosa, viene creato un file di dump per il processo monitorato. Nel caso della terminazione tra processi, viene creato anche un file di dump per il processo che ha causato la terminazione.
NOTIFICA 0x4 Quando viene rilevata un'uscita silenziosa, viene visualizzata una notifica pop-up.

Ignora uscite automatiche

L'impostazione Ignora uscite automatiche è disponibile come impostazione dell'applicazione, ma non come impostazione globale. È possibile utilizzare la casella di controllo Ignora uscite self per specificare se le uscite autonome vengono ignorate.

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

Valore Significato
0x0 Rilevare e rispondere sia alla terminazione autonoma che alla terminazione tra processi.
0x1 Ignorare la terminazione automatica. Rilevare e rispondere all'interruzione interprocessuale.

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 . Nella riga di comando è possibile usare le variabili seguenti.

Varaible Significato
%e ID del processo di uscita. Si tratta del processo monitorato che è terminato in silenzio.
%i ID del processo di avvio. Nel caso della terminazione automatica, si tratta dello stesso processo di uscita. In caso di 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 l'interruzione.
%c Codice di stato passato a ExitThread o TerminateThread .

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

windbg -p %e

La riga di comando Monitor Process viene archiviata nella voce del Registro di sistema MonitorProcess .

Percorso cartella dump

È possibile utilizzare la casella di testo Percorso cartella dump per specificare un percorso per i file di dump scritti quando viene rilevata un'uscita silenziosa.

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

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

Dimensioni cartella dump

È possibile utilizzare la casella di testo Dimensioni cartella dump per specificare il numero massimo di file di dump che è possibile scrivere nella cartella dump. Immettere questo valore come numero intero decimale.

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

Per impostazione predefinita, è previsto un limite di dieci file di dump che è possibile scrivere.

Tipo dump

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

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 Strumenti di debug per Windows.

Si supponga, ad esempio, di aver scelto 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 MINIDUMP_TYPE seguenti.

MiniDumpFilterModulePaths: 0x00000080

MiniDumpFilterMemory: 0x00000008

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

Lista di esclusione modulo

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

L'elenco dei moduli immesso nella casella Lista Ignora Moduli viene registrato nella voce del Registro ModuleIgnoreList.

Lettura dei report di chiusura del processo nel Visualizzatore eventi

Quando un processo monitorato viene chiuso automaticamente, il monitoraggio crea una voce nel Visualizzatore eventi. Per aprire Visualizzatore eventi, immettere il comando eventvwr.msc. Passare a Registri eventi di Windows > Applicazione. Cercare le voci di log con un'origine di Monitoraggio uscita processo.

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