Freigeben über


Überwachen des Beendens des automatischen Prozesses

Ab Windows 7 können Sie auf der Registerkarte Automatisches Beenden des Prozesses in GFlags den Namen eines Prozesses eingeben, den Sie für den automatischen Exit überwachen möchten.

Im Kontext dieser Überwachungsfunktion verwenden wir den Begriff Silent Exit , um zu bedeuten, dass der überwachte Prozess auf eine der folgenden Arten beendet wird.

Selbstbeendigung

Der überwachte Prozess beendet sich selbst, indem ExitProcess aufgerufen wird.

Prozessübergreifende Beendigung

Ein zweiter Prozess beendet den überwachten Prozess durch Aufrufen von TerminateProcess.

Das Überwachungsfeature erkennt keine normale Prozessbeendigung, die beim Beenden des letzten Threads des Prozesses auftritt. Das Überwachungsfeature erkennt keine Prozessbeendigung, die durch Kernelmoduscode initiiert wird.

Um einen Prozess für die Überwachung des automatischen Beendens zu registrieren, öffnen Sie in GFlags die Registerkarte Beendigung des automatischen Prozesses . Geben Sie den Prozessnamen als Bild ein, und drücken Sie die TAB-TASTE . Aktivieren Sie das Kontrollkästchen Überwachung für den automatischen Prozessausstieg aktivieren , und wählen Sie Anwenden aus. Dadurch wird das FLG_MONITOR_SILENT_PROCESS_EXIT-Flag im folgenden Registrierungseintrag festgelegt.

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

Weitere Informationen zu diesem Flag finden Sie unter Aktivieren der Überwachung des automatischen Beendens von Prozessen.

Weitere Informationen zur Verwendung der Registerkarte "Silent Process Exit " in GFlags finden Sie unter Konfigurieren der Überwachung für den automatischen Prozessausstieg.

Auf der Registerkarte Silent Process Exit von GFlags können Sie die Aktionen konfigurieren, die ausgeführt werden, wenn ein überwachter Prozess im Hintergrund beendet wird. Sie können Benachrichtigungen, Ereignisprotokollierung und Erstellung von Sicherungsdateien konfigurieren. Sie können einen Prozess angeben, der gestartet wird, wenn der automatische Exit erkannt wird, und Sie können eine Liste von Modulen angeben, die der Monitor ignoriert. Mehrere dieser Einstellungen sind sowohl global als auch für einzelne Anwendungen verfügbar. Globale Einstellungen gelten für alle Prozesse, die Sie für die Überwachung des automatischen Beendens registrieren. Anwendungseinstellungen gelten für einen einzelnen Prozess und setzen globale Einstellungen außer Kraft.

Globale Einstellungen werden in der Registrierung unter dem folgenden Schlüssel gespeichert.

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

Anwendungseinstellungen werden in der Registrierung unter dem folgenden Schlüssel gespeichert.

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

Berichtsmodus

Die Einstellung berichtsmodus ist als Anwendungseinstellung verfügbar, jedoch nicht als globale Einstellung. Sie können die folgenden Kontrollkästchen verwenden, um den Berichtsmodus festzulegen.

Überwachungsprozess startenDumpsammlung aktivierenBenachrichtigung aktivieren Der Registrierungseintrag ReportingMode ist ein bitweises OR der folgenden Flags.

Flag Wert Bedeutung
LAUNCH_MONITORPROCESS 0x1 Wenn das automatische Beenden erkannt wird, wird der Überwachungsprozess (im Feld Überwachungsprozess angegeben) gestartet.
LOCAL_DUMP 0x2 Wenn der automatische Exit erkannt wird, wird eine Speicherabbilddatei für den überwachten Prozess erstellt. Im Falle einer prozessübergreifenden Beendigung wird auch eine Speicherabbilddatei für den Prozess erstellt, der die Beendigung verursacht hat.
NOTIFICATION 0x4 Wenn die automatische Beendigung erkannt wird, wird eine Popupbenachrichtigung angezeigt.

Selbstaustritte ignorieren

Die Einstellung Selbstaustritte ignorieren ist als Anwendungseinstellung verfügbar, aber nicht als globale Einstellung. Sie können das Kontrollkästchen Selbstaustritte ignorieren verwenden, um anzugeben, ob Selbstaustritte ignoriert werden.

Der Registrierungseintrag IgnoreSelfExits weist einen der folgenden Werte auf.

Wert Bedeutung
0x0 Erkennen und reagieren Sie sowohl auf die Selbstbeendigung als auch auf die prozessübergreifende Beendigung.
0x1 Selbstbeendigung ignorieren. Erkennen und Reagieren auf die prozessübergreifende Beendigung.

Überwachen des Prozesses

Sie können einen Überwachungsprozess angeben, indem Sie einen Prozessnamen zusammen mit Befehlszeilenparametern in das Textfeld Prozess überwachen eingeben. Sie können die folgenden Variablen in der Befehlszeile verwenden.

Varaible Bedeutung
%e ID des beendenden Prozesses. Dies ist der überwachte Prozess, der im Hintergrund beendet wurde.
%i ID des initiierenden Prozesses. Im Fall der Selbstbeendigung ist dies identisch mit dem beendenden Prozess. Im Falle einer prozessübergreifenden Beendigung ist dies die ID des Prozesses, der die Beendigung verursacht hat.
%t ID des initiierenden Threads. Dies ist der Thread, der die Beendigung verursacht hat.
%c Der status Code, der an ExitThread oder TerminateThread übergeben wird.

Der folgende Wert für Monitorprozess gibt beispielsweise an, dass WinDbg beim automatischen Beenden gestartet und an den beendenden Prozess angefügt wird.

windbg -p %e

Die Befehlszeile Überwachen des Prozesses wird im Registrierungseintrag MonitorProcess gespeichert.

Speicherort des Speicherabbildordners

Sie können das Textfeld Speicherort des Speicherabbildordners verwenden, um einen Speicherort für die Speicherabbilddateien anzugeben, die geschrieben werden, wenn ein automatischer Exit erkannt wird.

Die Zeichenfolge, die Sie für speicherort des Speicherabbildordners eingeben, wird im Registrierungseintrag LocalDumpFolder gespeichert.

Wenn Sie keinen Speicherort für den Speicherabbildordner angeben, werden Die Speicherabbilddateien in den Standardspeicherort %TEMP%\Silent Process Exit geschrieben.

Größe des Speicherabbildordners

Sie können das Textfeld Größe des Speicherabbildordners verwenden, um die maximale Anzahl von Speicherabbilddateien anzugeben, die in den Speicherabbildordner geschrieben werden können. Geben Sie diesen Wert als ganzzahlige Dezimalzahl ein.

Der Wert, den Sie für die Größe des Dumpordners eingeben, wird im Registrierungseintrag MaxNumberOfDumpFiles gespeichert.

Standardmäßig gilt ein Grenzwert von zehn Speicherabbilddateien, die geschrieben werden können.

Speicherabbildtyp

Sie können die Dropdownliste Speicherabbildtyp verwenden, um den Typ der Speicherabbilddatei (Micro, Mini, Heap oder Benutzerdefiniert) anzugeben, die geschrieben wird, wenn ein automatischer Exit erkannt wird.

Der Dumptyp wird im Registrierungseintrag DumpType gespeichert, bei dem es sich um ein bitweises OR der Member der MINIDUMP_TYPE-Enumeration handelt. Diese Enumeration ist in dbghelp.h definiert, die im Paket Debugtools für Windows enthalten ist.

Angenommen, Sie haben den Speicherabbildtyp Micro ausgewählt, und Sie sehen, dass der DumpType-Registrierungseintrag den Wert 0x88 hat. Der Wert 0x88 ist ein bitweises OR der folgenden beiden MINIDUMP_TYPE-Enumerationswerte .

MiniDumpFilterModulePaths: 0x00000080

MiniDumpFilterMemory: 0x00000008

Wenn Sie den Speicherabbildtyp Benutzerdefiniert auswählen, geben Sie im Feld Benutzerdefinierter Speicherabbildtyp Ihren eigenen bitweisen OR mit MINIDUMP_TYPE Enumerationswerten ein. Geben Sie diesen Wert als ganzzahlige Dezimalzahl ein.

Liste "Modul ignorieren"

Sie können das Feld Modul ignorieren Liste verwenden, um eine Liste von Modulen anzugeben, die ignoriert werden, wenn ein automatischer Exit erkannt wird. Wenn der überwachte Prozess von einem der Module in dieser Liste beendet wird, wird der automatische Exit ignoriert.

Die Liste der Module, die Sie im Feld Modul ignorieren-Liste eingeben, wird im Registrierungseintrag ModuleIgnoreList gespeichert.

Lesen von Prozessausgangsberichten in Ereignisanzeige

Wenn ein überwachter Prozess im Hintergrund beendet wird, erstellt der Monitor einen Eintrag in Ereignisanzeige. Um Ereignisanzeige zu öffnen, geben Sie den Befehl eventvwr.msc ein. Navigieren Sie zu Windows-Protokollanwendung>. Suchen Sie nach Protokolleinträgen, die eine Quelle für den Prozessausgangsmonitor aufweisen.

Dialogfeld