共用方式為


監視靜默過程結束

從 Windows 7 開始,您可以使用 GFlags 中的 [ 無訊息進程結束 ] 索引標籤,輸入您要監視無訊息結束的進程名稱。

在此監視功能的內容中,我們使用 無訊息結束 一詞來表示受監視的進程會以下列其中一種方式終止。

自我終止

受監視的進程會藉由呼叫 ExitProcess 來終止本身。

跨進程終止

第二個進程會呼叫 TerminateProcess 來終止受監視的進程。

監視功能不會偵測到進程最後一個線程結束時發生的一般進程終止。 監視功能不會偵測由內核模式程式代碼起始的進程終止。

若要註冊無訊息結束監視的程式,請開啟 GFlags 中的 [ 無訊息進程結束 ] 索引標籤。 輸入行程名稱作為 影像 ,然後按 Tab 鍵。 核取 [ 啟用無訊息進程結束監視] 方塊,然後選取 [ 套用]。 這會在下列登錄項目中設定FLG_MONITOR_SILENT_PROCESS_EXIT旗標。

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

如需此旗標的詳細資訊,請參閱 啟用無訊息進程結束監視

如需有關在 GFlags 中使用 靜默進程結束 標籤的詳細資訊,請參閱 設定靜默進程結束監視

在 GFlags 的 [ 無訊息進程結束 ] 索引標籤中,您可以設定當受監視的進程以無訊息方式結束時所發生的動作。 您可以設定通知、事件記錄,以及建立轉儲檔案。 您可以指定偵測到靜默退出時啟動的程序,並且您可以指定監視將忽略的模組清單。 這些設定中有數個可供全域和個別應用程式使用。 全域設定會套用至您註冊進行靜默退出監控的所有進程。 應用程式設定會套用至個別進程並覆寫全域設定。

全域設定儲存在登錄的以下機碼中。

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

應用程式設定會儲存在註冊表的下列機碼下。

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

報告模式

[報告模式] 設定可作為應用程式設定,但無法做為全域設定。 您可以使用下列複選框來設定報告模式。

啟動監視程式啟用傾印收集啟用通知ReportingMode 登錄專案是下列旗標的位元邏輯或運算。

旗標 價值 意義
啟動監控進程 0x1 當偵測到靜默退出時,將啟動在 [監視行程] 欄中指定的監視行程。
本地轉存 0x2 偵測到靜默退出時,會為受監視的程序建立傾印檔案。 在跨進程終止的情況下,也會為導致終止的進程建立傾印檔案。
通知 0x4 當偵測到靜默退出時,會顯示彈出通知。

忽略自身退出

忽略自行退出 設定可作為應用程式設定,但無法作為全域設定。 您可以使用 [ 忽略自身退出 ] 複選框來指定是否忽略自身退出。

IgnoreSelfExits 登錄項目具有下列其中一個值。

價值 意義
0x0 偵測並回應自我終止和跨進程終止。
0x1 忽略自我終止。 偵測並回應跨進程終止。

監視進程

您可以在 [監視行程] 文字框中輸入行程名稱以及命令行參數,以指定 監視進程 。 您可以在命令列中使用下列變數。

Varaible 意義
%e 退出進程的標識碼。 這是以無訊息方式結束的受監視進程。
%i 起始進程的標識碼。 在自我終止的情況下,這與退出程序相同。 在跨進程終止的情況下,這是造成終止的進程標識符。
%t 起始線程的標識碼。 這是造成中止的線程。
%c 傳遞至 ExitThreadTerminateThread 的狀態代碼。

例如,監視程序的下列值指定在靜默結束時,啟動 WinDbg 並附加至結束的程序。

windbg -p %e

Monitor Process 命令行會儲存在 MonitorProcess 登錄專案中。

轉儲資料夾位置

您可以使用傾印資料夾位置文字框,指定當偵測到靜默退出時所寫入傾印檔案的位置。

您針對 Dump 資料夾位置 輸入的字串會儲存在 LocalDumpFolder 登錄專案中。

如果您未指定傾印資料夾位置,傾印檔案會寫入預設位置,也就是 %TEMP%\Silent Process Exit。

傾印資料夾大小

您可以使用 [傾印資料夾大小] 文字框來指定可寫入傾印資料夾的傾印檔案數目上限。 將此值輸入為十進位整數。

您針對 Dump 資料夾大小 輸入的值會儲存在 MaxNumberOfDumpFiles 登錄專案中。

根據預設,可以寫入的傾印檔案限製為10個。

傾印類型

您可以使用 傾印類型 下拉式清單來指定當偵測到無訊息退出時所寫入的傾印檔案類型(微型、小型、堆積或自定義)。

傾印類型會儲存在 DumpType 登錄項目中,這是 MINIDUMP_TYPE 列舉成員的位元運算 OR。 此列舉定義於 dbghelp.h 中,其包含在 Windows 套件的偵錯工具中。

例如,假設您選擇了 Micro 的傾印類型,您會看到 DumpType 登錄專案具有 0x88 的值。 下列兩個 MINIDUMP_TYPE 列舉值的位元運算 OR 結果是值 0x88。

MiniDumpFilterModulePaths:0x00000080

MiniDumpFilterMemory:0x00000008

如果您選擇 Custom 的傾印類型,請在 自定義傾印類型 方塊中輸入您自己的位運算 OR MINIDUMP_TYPE 列舉值。 將此值輸入為十進位整數。

模組忽略清單

您可以使用 [ 模組忽略清單 ] 方塊來指定偵測到無訊息結束時將忽略的模組清單。 如果受監視的進程由這個清單中的其中一個模組終止,則會忽略靜默退出。

您在 [ 模組忽略清單 ] 方塊中輸入的模組清單會儲存在 ModuleIgnoreList 登錄專案中。

讀取事件查看器中的進程結束報告

當受監視的進程沒有通知地結束時,監視器會在事件查看器中建立記錄。 若要開啟事件查看器,請輸入命令 eventvwr.msc。 導覽到 [Windows 日誌> 應用程式]。 尋找具有進程結束監視器來源的日誌項目。

[事件屬性] 對話框的一般索引標籤,顯示來源為 [程序結束監視器]。