使用 Shell 進行除錯
本主題說明如何偵錯 Shell 和命名空間擴充 DLL。
- 在調試程式 下執行殼層
- 執行和測試 Shell 擴充功能
- 卸除 DLL
在除錯器下執行 Shell
若要對擴充功能進行偵錯,您需要從偵錯工具運行 Shell。 請遵循下列步驟:
將延伸模組的專案載入調試程式,但不會執行它。
關閉殼層。
- 針對 Windows Vista 和更新版本:
- 顯示 開始 選單。
- 按 CTRL+SHIFT,並以滑鼠右鍵按兩下 開始 選單的右半部背景。
- 從出現的功能表中,選擇 [結束檔案總管] 。
- 針對 Windows XP:
- 從 [開始] 選單中,選擇 [關機]。
- 按下 CTRL+ALT+SHIFT 鍵,然後在 [關閉 Windows ] 對話框中,點擊 [沒有]。
指令介面現在已關閉,但所有其他應用程式仍在執行中,包括偵錯程式。
- 針對 Windows Vista 和更新版本:
設定調試程式,以從 Windows 目錄執行具有 Explorer.exe 的擴充 DLL。
從調試程式執行專案。 Shell會照常啟動,但偵錯工具會附加至Shell的程序。
執行和測試 Shell 擴展
您可以在個別的 Windows 檔案總管程式中執行及測試延伸模組,以避免停止和重新啟動桌面和任務列。 當您執行和測試擴充功能時,仍可使用桌面和任務列。
若要啟用此功能,請將下列REG_DWORD專案新增至登錄。
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
DesktopProcess = 1
若要讓這個項目生效,您必須註銷並重新登入。 此設定會導致在一個 Explorer.exe 程式中建立桌面和任務欄視窗,並在不同的 Explorer.exe 程式中開啟所有其他檔案總管和資料夾視窗。
除了讓延伸模組的執行和測試更加方便之外,此設定還能增強與 Shell 擴充套件相關的桌面穩定性。 許多這類延伸模組(例如快捷方式功能表延伸模組)都會載入到非桌面 Explorer.exe 程式。 如果此程序終止,桌面和任務欄將不會受到影響,而下一個 [總管] 或 [資料夾] 視窗將會重新建立終止的進程。
卸載 DLL
Shell 會在使用計數為零時自動卸除任何 DLL,但只有在 DLL 一段時間未使用之後。 此非活躍期間有時可能無法容忍,特別是當 Shell 擴充功能 DLL 正在調試時。 您可以將下列資訊新增至登錄,以縮短非使用中的期間。
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
AlwaysUnloadDll