Debuggen mit der Shell
In diesem Thema wird das Debuggen von Shell- und Namespaceerweiterungs-DLLs erläutert.
- Ausführen der Shell unter einem Debugger
- Ausführen und Testen von Shellerweiterungen
- Entladen der DLL
Ausführen der Shell unter einem Debugger
Zum Debuggen der Erweiterung müssen Sie die Shell über den Debugger ausführen. Folgen Sie diesen Schritten:
Laden Sie das Projekt der Erweiterung in den Debugger, führen Sie es jedoch nicht aus.
Fahren Sie die Shell herunter.
- Für Windows Vista und höher:
- Zeigt das Startmenü an.
- Drücken Sie STRG+UMSCHALT, und klicken Sie mit der rechten Maustaste auf den Hintergrund der rechten Hälfte des Startmenüs .
- Wählen Sie im angezeigten Menü beenden Explorer aus.
- Für Windows XP:
- Wählen Sie im Startmenüdie Option Herunterfahren aus.
- Drücken Sie STRG+ALT+UMSCHALT, und klicken Sie im Dialogfeld Fenster herunterfahren auf Nein.
Die Shell ist jetzt heruntergefahren, aber alle anderen Anwendungen werden weiterhin ausgeführt, einschließlich des Debuggers.
- Für Windows Vista und höher:
Legen Sie den Debugger so fest, dass die Erweiterungs-DLL mit Explorer.exe aus dem Windows-Verzeichnis ausgeführt wird.
Führen Sie das Projekt über den Debugger aus. Die Shell wird wie gewohnt gestartet, aber der Debugger wird an den Shellprozess angefügt.
Ausführen und Testen von Shellerweiterungen
Sie können Ihre Erweiterungen in einem separaten Windows-Explorer-Prozess ausführen und testen, um zu vermeiden, dass Desktop und Taskleiste beendet und neu gestartet werden. Der Desktop und die Taskleiste können weiterhin verwendet werden, während Sie die Erweiterungen ausführen und testen.
Um dieses Feature zu aktivieren, fügen Sie der Registrierung den folgenden REG_DWORD Eintrag hinzu.
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
DesktopProcess = 1
Damit dieser Eintrag wirksam wird, müssen Sie sich abmelden und erneut anmelden. Diese Einstellung bewirkt, dass die Desktop- und Taskleistenfenster in einem Explorer.exe Prozess und alle anderen Explorer- und Ordnerfenster in einem anderen Explorer.exe-Prozess geöffnet werden.
Diese Einstellung macht das Ausführen und Testen Ihrer Erweiterungen nicht nur bequemer, sie macht den Desktop auch robuster, wenn es sich um Shellerweiterungen handelt. Viele dieser Erweiterungen (z. B. Kontextmenüerweiterungen) werden in den Nichtdesktop-Explorer.exe-Prozess geladen. Wenn dieser Prozess beendet wird, sind der Desktop und die Taskleiste nicht betroffen, und im nächsten Explorer- oder Ordnerfenster wird der beendete Prozess neu erstellt.
Entladen der DLL
Die Shell entlädt jede DLL automatisch, wenn die Nutzungsanzahl null ist, aber erst, nachdem die DLL für einen bestimmten Zeitraum nicht verwendet wurde. Dieser inaktive Zeitraum kann manchmal inakzeptabel lang sein, insbesondere wenn eine Shell-Erweiterungs-DLL debuggt wird. Sie können den inaktiven Zeitraum verkürzen, indem Sie der Registrierung die folgenden Informationen hinzufügen.
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
AlwaysUnloadDll