共用方式為


使用殼層進行偵錯

本主題說明如何偵錯殼層和命名空間擴充 DLL。

在偵錯工具下執行殼層

若要對擴充功能進行偵錯,您必須從偵錯工具執行殼層。 請遵循下列步驟:

  1. 將延伸模組的專案載入偵錯工具,但不執行它。

  2. 關閉殼層。

    • 針對 Windows Vista 和更新版本:
      1. 顯示 [ 開始] 功能表。
      2. 按 CTRL+SHIFT,然後在 [ 開始 ] 功能表右半部的背景上按一下滑鼠右鍵。
      3. 從出現的功能表中,選擇 [ 結束總管]。
    • 針對 Windows XP:
      1. 從 [ 開始 ] 功能表中,選擇 [ 關機]。
      2. 按 CTRL+ALT+SHIFT,然後按一下 [關閉 Windows] 對話方塊中的[否]。

    Shell 現在已關閉,但所有其他應用程式仍在執行中,包括偵錯工具。

  3. 設定偵錯工具,以從 Windows 目錄執行具有Explorer.exe的擴充 DLL。

  4. 從偵錯工具執行專案。 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 尚未使用一段時間之後。 此非使用中的期間有時可能無法接受,特別是偵錯殼層延伸模組 DLL 時。 您可以將下列資訊新增至登錄,以縮短非使用中的期間。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll