Condividi tramite


Debug con shell

Questo argomento illustra come eseguire il debug delle DLL dell'estensione shell e dello spazio dei nomi.

Esecuzione della shell in un debugger

Per eseguire il debug dell'estensione, è necessario eseguire Shell dal debugger. Seguire questa procedura:

  1. Caricare il progetto dell'estensione nel debugger, ma non eseguirlo.

  2. Arrestare shell.

    • Per Windows Vista e versioni successive:
      1. Visualizzare il menu Start .
      2. Premere CTRL+MAIUSC e fare clic con il pulsante destro del mouse sullo sfondo della metà destra del menu Start .
      3. Dal menu visualizzato scegliere Esci esplora risorse.
    • Per Windows XP:
      1. Dal menu Start scegliere Arresta.
      2. Premere CTRL+ALT+MAIUSC e fare clic su No nella finestra di dialogo Arresta Windows .

    Shell è ora arrestato, ma tutte le altre applicazioni sono ancora in esecuzione, incluso il debugger.

  3. Impostare il debugger per eseguire la DLL di estensione con Explorer.exe dalla directory di Windows .

  4. Eseguire il progetto dal debugger. Shell verrà avviata come di consueto, ma il debugger verrà collegato al processo di Shell.

Esecuzione e test delle estensioni shell

È possibile eseguire e testare le estensioni in un processo di Esplora risorse di Windows separato per evitare l'arresto e il riavvio della barra delle applicazioni e del desktop. La barra delle applicazioni e il desktop possono comunque essere usati durante l'esecuzione e il test delle estensioni.

Per abilitare questa funzionalità, aggiungere la voce REG_DWORD seguente al Registro di sistema.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DesktopProcess = 1

Per rendere effettiva questa voce, è necessario disconnettersi e accedere di nuovo. Questa impostazione determina la creazione delle finestre della barra delle applicazioni e desktop in un processo di Explorer.exe e di tutte le altre finestre di Esplora cartelle da aprire in un processo di Explorer.exe diverso.

Oltre a rendere più pratico l'esecuzione e il test delle estensioni, questa impostazione rende anche il desktop più affidabile in quanto si riferisce alle estensioni shell. Molte estensioni (estensioni del menu di scelta rapida, ad esempio) verranno caricate nel processo di Explorer.exe nondesktop. Se questo processo termina, il desktop e la barra delle applicazioni non saranno interessati e la finestra di Esplora o cartella successiva creerà nuovamente il processo terminato.

Scaricare la DLL

Shell scarica automaticamente qualsiasi DLL quando il numero di utilizzo è zero, ma solo dopo che la DLL non è stata usata per un periodo di tempo. Questo periodo inattivo potrebbe essere inaccettabile a volte, soprattutto quando viene eseguita il debug di una DLL dell'estensione shell. È possibile ridurre il periodo inattivo aggiungendo le informazioni seguenti al Registro di sistema.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll