Udostępnij przez


Debugowanie za pomocą powłoki systemowej

W tym temacie opisano sposób debugowania bibliotek DLL rozszerzeń powłoki i rozszerzeń namespace.

Uruchamianie powłoki systemowej w debugerze

Aby debugować rozszerzenie, należy uruchomić powłokę za pomocą debugera. Wykonaj następujące kroki:

  1. Załaduj projekt rozszerzenia do debugera, ale nie uruchamiaj go.

  2. Zamknij powłokę.

    • W przypadku systemu Windows Vista i nowszych:
      1. Wyświetl menu Start.
      2. Naciśnij klawisze CTRL+SHIFT i kliknij prawym przyciskiem myszy na tle prawej połowy menu Start.
      3. Z wyświetlonego menu wybierz pozycję Zamknij Eksplorator.
    • W przypadku systemu Windows XP:
      1. Z menu Start wybierz Zamknij.
      2. Naciśnij CTRL+ALT+SHIFT, a następnie kliknij przycisk Nie w oknie dialogowym Zamykanie systemu Windows .

    Powłoka jest teraz zamknięta, ale wszystkie inne aplikacje są nadal uruchomione, w tym debuger.

  3. Ustaw debuger, aby uruchomić pliki DLL rozszerzenia z Explorer.exe z katalogu Windows .

  4. Uruchom projekt z debugera. Powłoka uruchomi się jak zwykle, ale debuger będzie podłączony do procesu powłoki.

Uruchamianie i testowanie rozszerzeń powłokowych

Rozszerzenia można uruchamiać i testować w osobnym procesie Eksploratora Windows, aby uniknąć zatrzymywania i ponownego uruchamiania pulpitu i paska zadań. Pulpit i pasek zadań mogą być nadal używane podczas uruchamiania i testowania rozszerzeń.

Aby włączyć tę funkcję, dodaj następujący wpis REG_DWORD do rejestru.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DesktopProcess = 1

Aby ten wpis zaczął obowiązywać, należy wylogować się i zalogować ponownie. To ustawienie powoduje, że okna pulpitu i paska zadań zostaną utworzone w jednym procesie Explorer.exe, a wszystkie inne okna Eksploratora i folderu zostaną otwarte w innym procesie Explorer.exe.

Oprócz tego, że uruchamianie się i testowanie rozszerzeń jest wygodniejsze, to ustawienie sprawia również, że pulpit jest bardziej niezawodny w kontekście rozszerzeń powłoki. Wiele takich rozszerzeń (na przykład rozszerzeń menu skrótów) zostanie załadowanych do procesu niedesktopowego Explorer.exe. Jeśli ten proces zakończy się, pulpit i pasek zadań nie będą miały wpływu, a następne okno Eksploratora lub folderu ponownie utworzy zakończony proces.

Zwalnianie biblioteki DLL

Powłoka automatycznie zwalnia dowolną bibliotekę DLL, gdy jej liczba użycia wynosi zero, ale dopiero po tym, jak biblioteka DLL nie została użyta przez pewien czas. Okres tej nieaktywności czasami może być nieakceptowalnie długi, szczególnie w przypadku debugowania biblioteki DLL rozszerzenia powłoki. Okres nieaktywny można skrócić, dodając następujące informacje do rejestru.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll