Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od systemu Windows 7, można użyć karty Zamykanie procesu dyskretnego w GFlags, aby wprowadzić nazwę procesu, który chcesz monitorować w celu zakończenia dyskretnego.
W kontekście tej funkcji monitorowania używamy terminu dyskretne wyjście , aby oznaczać, że monitorowany proces kończy się w jeden z następujących sposobów.
Samodzielne kończenie
Monitorowany proces kończy się przez wywołanie metody ExitProcess.
Kończenie między procesami
Drugi proces kończy monitorowany proces przez wywołanie metody TerminateProcess.
Funkcja monitorowania nie wykrywa normalnego zakończenia procesu, które ma miejsce po zakończeniu ostatniego wątku procesu. Funkcja monitorowania nie wykrywa zakończenia procesu zainicjowanego przez kod trybu jądra.
Aby zarejestrować proces monitorowania wyjścia w trybie dyskretnym, otwórz kartę Zamykanie procesu dyskretnego w GFlags. Wprowadź nazwę procesu jako Obraz i naciśnij Tab . Zaznacz pole Włącz monitorowanie zakończenia procesu dyskretnego i wybierz pozycję Zastosuj. Spowoduje to ustawienie flagi FLG_MONITOR_SILENT_PROCESS_EXIT w następującym wpisie rejestru.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ProcessName\GlobalFlag
Aby uzyskać więcej informacji na temat tej flagi, zobacz Włączanie monitorowania dyskretnego zakończenia procesu.
Aby uzyskać więcej informacji na temat korzystania z karty Zamykanie procesu dyskretnego w GFlags, zobacz Konfigurowanie monitorowania zakończenia procesu dyskretnego.
Na karcie Zamykanie procesu dyskretnego GFlags można skonfigurować akcje, które będą podejmowane, gdy monitorowany proces kończy się w trybie dyskretnym. Możesz skonfigurować powiadomienia, rejestrowanie zdarzeń i tworzenie plików zrzutu. Można określić proces, który zostanie uruchomiony po wykryciu wyjścia w trybie dyskretnym, i można określić listę modułów, które monitor będzie ignorował. Niektóre z tych ustawień są dostępne zarówno globalnie, jak i dla poszczególnych aplikacji. Ustawienia globalne mają zastosowanie do wszystkich procesów zarejestrowanych w celu monitorowania wyjścia w trybie dyskretnym. Ustawienia aplikacji dotyczą pojedynczego procesu i przesłaniają ustawienia globalne.
Ustawienia globalne są przechowywane w rejestrze pod następującym kluczem.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit
Ustawienia aplikacji są przechowywane w rejestrze pod następującym kluczem.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ProcessName
Tryb raportowania
Ustawienie Tryb raportowania jest dostępne jako ustawienie aplikacji, ale nie jako ustawienie globalne. Aby ustawić tryb raportowania, możesz użyć następujących pól wyboru.
Uruchom proces monitorowaniaWłącz zbieranie zrzutówWłącz powiadomienie Wpis rejestru ReportingMode jest bitowym LUB następujących flag.
| Flaga | Wartość | Znaczenie |
|---|---|---|
| Uruchom proces monitorowania | 0x1 | Po wykryciu wyjścia w trybie dyskretnym zostanie uruchomiony proces monitorowania (określony w polu Proces monitorowania ). |
| LOCAL_DUMP | 0x2 | Po wykryciu cichego wyjścia tworzy się plik zrzutu dla monitorowanego procesu. W przypadku zakończenia między procesami plik zrzutu jest również tworzony dla procesu, który spowodował zakończenie. |
| POWIADOMIENIE | 0x4 | Po wykryciu cichego wyjścia pojawia się wyskakujące powiadomienie. |
Ignoruj wyjścia samodzielne
Ustawienie Ignoruj wyjścia własne jest dostępne jako ustawienie aplikacji, ale nie jako ustawienie globalne. Możesz użyć pola wyboru Ignoruj samodzielne zakończenia , aby określić, czy samodzielne wyjścia są ignorowane.
Wpis rejestru IgnoreSelfExits ma jedną z następujących wartości.
| Wartość | Znaczenie |
|---|---|
| 0x0 | Wykrywanie i reagowanie zarówno na autonomiczną terminację, jak i międzyprocesową terminację. |
| 0x1 | Ignoruj samozakończenie. Wykrywanie i reagowanie na zakończenie procesów krzyżowych. |
Monitorowanie procesu
Proces monitorowania można określić, wprowadzając nazwę procesu wraz z parametrami wiersza polecenia w polu tekstowym Monitorowanie procesu . W wierszu polecenia można użyć następujących zmiennych.
| Zmienna | Znaczenie |
|---|---|
| %e | Identyfikator procesu wychodzącego. Jest to monitorowany proces, który zakończył się dyskretnie. |
| %i | Identyfikator procesu inicjującego. W przypadku samodzielnego zakończenia jest to takie samo jak proces wychodzenia. W przypadku zakończenia między procesami jest to identyfikator procesu, który spowodował zakończenie. |
| %t | Identyfikator inicjującego wątku. Jest to wątek, który spowodował zakończenie. |
| %c | Kod stanu przekazany do ExitThread lub TerminateThread. |
Na przykład następująca wartość procesu monitorowania określa, że po wyjściu dyskretnym system WinDbg jest uruchamiany i dołączony do procesu zakończenia.
windbg -p %e
Wiersz polecenia Monitoruj proces jest przechowywany we wpisie rejestru MonitorProcess.
Lokalizacja folderu zrzutu
Za pomocą pola tekstowego Lokalizacja folderu zrzutu można określić lokalizację plików zrzutu, które są zapisywane po wykryciu wyjścia dyskretnego.
Ciąg wprowadzony dla lokalizacji folderu Zrzut jest przechowywany we wpisie rejestru LocalDumpFolder .
Jeśli nie określisz lokalizacji folderu zrzutu, pliki zrzutu są zapisywane w domyślnej lokalizacji, która jest %TEMP%\Silent Process Exit.
Rozmiar folderu zrzutu
Za pomocą pola tekstowego Rozmiar folderu zrzutu można określić maksymalną liczbę plików zrzutu, które można zapisać w folderze zrzutu. Wprowadź tę wartość jako liczbę całkowitą dziesiętną.
Wartość wprowadzona dla rozmiaru folderu zrzutu jest przechowywana we wpisie rejestru MaxNumberOfDumpFiles .
Domyślnie istnieje limit dziesięciu plików zrzutu, które można zapisać.
Typ zrzutu
Możesz użyć listy rozwijanej Typ zrzutu , aby określić typ pliku zrzutu (Micro, Mini, Heap lub Custom), który jest zapisywany po wykryciu wyjścia dyskretnego.
Typ zrzutu jest przechowywany w wpisie rejestru DumpType, który jest operacją OR bitową na elementach wyliczenia MINIDUMP_TYPE. To wyliczenie jest definiowane w pliku dbghelp.h, który jest zawarty w pakiecie Narzędzia do debugowania dla systemu Windows.
Załóżmy na przykład, że wybrano typ zrzutu Micro, a widzisz, że wpis rejestru DumpType ma wartość 0x88. Wartość 0x88 jest wynikiem bitowym OR dla dwóch następujących wartości wyliczeń MINIDUMP_TYPE.
MiniDumpFilterModulePaths: 0x00000080
MiniDumpFilterMemory: 0x00000008
W przypadku wybrania typu zrzutu niestandardowego wprowadź własny bitowy OR wartości wyliczenia MINIDUMP_TYPE w polu Niestandardowy typ zrzutu . Wprowadź tę wartość jako liczbę całkowitą dziesiętną.
Moduł Ignoruj listę
Możesz użyć pola Lista ignorowanych modułów, aby określić listę modułów, które zostaną zignorowane po wykryciu cichego wyjścia. Jeśli monitorowany proces zostanie zakończony przez jeden z modułów na tej liście, wyjście dyskretne zostanie zignorowane.
Lista modułów, którą wprowadzisz do pola Lista ignorowanych modułów, jest przechowywana we wpisie rejestru ModuleIgnoreList.
Odczytywanie raportów zakończenia procesu w Podglądzie zdarzeń
Gdy monitorowany proces kończy się dyskretnie, monitor tworzy wpis w Podglądzie zdarzeń. Aby otworzyć Podgląd zdarzeń, wprowadź polecenie eventvwr.msc. Przejdź do aplikacji dzienników systemu > Windows. Poszukaj wpisów dziennika, które mają Źródło jako Process Exit Monitor.