RegMon for Windows v7.04

作者:Mark Russinovich 和 Bryce Cogswell

發佈日期: 2006 年 11 月 1 日


介紹

注意:自 Win2000SP4、WinXPSP2、Win2003SP1 及 Vista 開始的 Windows 版本,就已經以 Process Monitor 來取代 Filemon 與 Regmon。Filemon 與 Regmon 仍為舊版的作業系統維持支援,包括 Win9x。

Regmon 是登錄監控公用程式,將會顯示哪些應用程式正在存取登錄,它們正在存取哪些機碼,以及它們正在讀取和寫入的登錄資料 - 全部都是即時的。這個進階公用程式可讓您執行靜態登錄工具無法執行的動作,好讓您正確地查看和瞭解程式如何使用登錄。透過靜態工具,您可能可以看到變更的登錄值與機碼。透過 Regmon,您將看到如何變更值與機碼。

Regmon 可在 WindowsNT/2000/XP/2003、Windows95/98/Me 以及適用於 x64 的 Windows 64 位元上運作。

安裝和使用

如果您對於使用 Regmon 有任何問題,請造訪 Sysinternals Regmon 論壇。

請將檔案複製到硬碟以安裝 Regmon,然後執行 Regmon.exe 來啟動它。功能表項目與工具列按鈕都可用以切換開啟和關閉監控、停用事件擷取、控制清單檢視的捲動,以及將清單檢視內容儲存到 ASCII 檔案。

使用「篩選器」對話方塊 (使用工具列按鈕或是選取 [選項]| [篩選器]/[醒目提示] 功能表選項) 來選取將顯示在清單檢視中的資料。'*' 萬用字元會符合自定字串,而篩選器則是不區分大小寫。只有顯示在包含篩選器中但未被排除篩選器排除的符合項目才會顯示。使用 ';' 在篩選器中分隔多個字串 (例如 "regmon;software")。

例如,如果包含篩選器是 "HKLM",而排除篩選器是 "HKLM\Software",則除了在 HKLM\Software 之下的機碼與值將會受到監控以外,全部都會參照在 HKLM 之下的機碼與值。

萬用字元允許複雜的模式比對,這使得將特定的登錄存取與特定的應用程式比對變得可能。包含篩選器 "Winword*Windows" 將會使 Regmon 只顯示 Microsoft Word 存取的機碼與值並且其中包括 "Windows" 這個字。

使用醒目提示篩選器以指定想要在清單檢視輸出中醒目提示的輸出。使用 [選項]|[醒目提示色彩] 來選取醒目提示色彩。

Regmon 可以在事件上加上時間戳記,或是顯示從上次清除輸出視窗所經過的時間 (或是從您啟動 Regmon 開始)。[選項] 功能表與時鐘工具列按鈕可讓您在兩個模式之間切換。在工具列上的按鈕會以時鐘或碼表顯示目前的模式。在輸出中的 [時間] 欄位顯示持續時間時,會顯示基礎檔案系統服務特定要求時所花費的秒數。

當您在 Regmon 的輸出中看到要編輯的登錄值或機碼時,請直接按兩下包括該參照的行 (或使用 Regedit 工具列按鈕),接著 Regmon 就會讓您使用 Regedit 並直接進入特定值。

按一下 這裡學習 Regmon 的開機監控功能,這個功能在 Windows NT 上可以使用。

How Regmon Works

在 Win9x 上的 Regmon 核心是在虛擬裝置驅動程式 Regvxd.vxd 之中。它是以動態的方式載入,而且在其初始化時,它使用 VxD 服務勾點 (請參閱 1996 年 5 月份 Dr. Dobb 的 VxD 服務勾點之期刊文章,以獲得更詳細的資訊),將自己插入 Win95 核心 (虛擬機器管理員) 內 16 個登錄存取功能的呼叫鏈結中。所有的登錄作業,不論是 16 位元程式、Win32 應用程式或是裝置驅動程式,都會導向這些常式,所以 Regmon 會擷取所有發生在機器上的登錄作業。

在 Windows NT、2000 和 XP 上,Regmon 所載入的裝置驅動程式,會使用為 NT 所開發的技術,稱為系統呼叫勾點。當使用者模式元件做出特殊權限的系統呼叫時,控制權會轉移到 NTOSKRNL.EXE (the core of the Windows NT operating system) 中的軟體插斷控制碼。這個控制碼會採用系統呼叫號碼,而這個號碼會傳遞給一個機器登錄,並將它編製成系統服務表格,以尋找將處理該要求的 NT 功能之位址。透過以指向勾點功能的指標來取代表格中的項目,就有可能攔截和取代、增強或監控 NT 系統服務。會明顯地只攔截以登錄相關的服務之 Regmon,只是這個執行中的功能之其中一個範例。

在 Windows .NET Server 上,Regmon 利用新作業系統登錄回撥機制,在登錄存取發生時來註冊和接收關於它們的資訊。當您在 .NET Server 上執行 Regmon 時,它會載入利用回撥的 Regmon 驅動程式版本。

當 Regmon 看到開啟、建立或關閉呼叫時,它會更新做為機碼控制代碼與登錄路徑名稱之間對應的內部雜湊表。每當它看到以控制代碼為基礎的呼叫時,就會查詢雜湊表中的控制代碼以取得要顯示的完整名稱。如果以控制代碼為基礎的存取參照了在啟動 Regmon 之前開啟的機碼,Regmon 將無法在其雜湊表中找到對應,而且將會直接改顯示機碼的值。

關於存取的資訊將會傾印至 ASCII 緩衝區,而該緩衝區則會定期複製到 GUI,以利在其清單方塊中列印。

For more detailed information on how Regmon works on Windows NT, see:

  • "Windows NT System Call Hooking," by Mark Russinovich and Bryce Cogswell, Dr. Dobb's Journal, January 1997

  • "Inside NT Utilities", Windows NT Magazine, February 1999.

Related Utilities

Here are some other monitoring tools available at Sysinternals:

更多相關資訊

The following serve as additional sources of information on the Windows NT/2000/XP and Windows 9x/Me registries:

Microsoft Regmon KB Articles

The following Microsoft KB articles reference Regmon for troubleshooting or diagnosing various problems:

下載 Regmon (271 KB)

 

 

回到頁首