Condividi tramite


Debug con la shell

Questo argomento illustra come eseguire il debug delle DLL della shell e delle estensioni del namespace.

Esecuzione della shell sotto 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. Chiudere il 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 che si apre, scegliere Exit Explorer.
    • Per Windows XP:
      1. Dal menu Start scegliere Arresta.
      2. Premere CTRL+ALT+MAIUSC e fare clic su No nella finestra di dialogo Spegnere Windows.

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

  3. Impostare il debugger per eseguire la DLL dell'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 della shell.

Esecuzione e test delle estensioni della shell

È possibile eseguire e testare le estensioni in un processo separato di Windows Explorer per evitare di arrestare e riavviare il desktop e la barra delle applicazioni. Il desktop e la barra delle applicazioni possono comunque essere usati durante l'esecuzione e il test delle estensioni.

Per abilitare questa funzionalità, aggiungere la voce di 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 del desktop in un unico processo di Explorer.exe e di tutte le altre finestre di Esplora e 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 il desktop più affidabile in relazione alle estensioni shell. Molte estensioni di questo tipo (ad esempio estensioni del menu di scelta rapida) verranno caricate nel processo nondesktop Explorer.exe. Se questo processo termina, il desktop e la barra delle applicazioni non saranno interessati e la finestra successiva di Esplora o cartella creerà nuovamente il processo terminato.

Scaricamento della 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 eccessivamente lungo a volte, soprattutto quando viene eseguito il debug di una DLL dell'estensione shell. È possibile abbreviare il periodo inattivo aggiungendo le informazioni seguenti al Registro di sistema.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll