Registrazione dell'applicazione

In questo argomento viene illustrato come le applicazioni possono esporre informazioni su se stesse necessarie per abilitare determinati scenari. Sono incluse le informazioni necessarie per individuare l'applicazione, i verbi supportati dall'applicazione e i tipi di file che un'applicazione può gestire.

Questo argomento è organizzato come segue:

Nota

Le applicazioni possono anche essere registrate nelle applicazioni Set Program Access and Computer Defaults (SPAD) e Imposta programmi predefiniti (SYDP). Per informazioni sulla registrazione dell'applicazione SPAD e SYDP, vedere Linee guida per le associazioni di file e programmi predefiniti e Impostare l'accesso al programma e le impostazioni predefinite del computer.For information about SPAD and SYDP application registration, see Guidelines for File Associations and Default Programs, and Set Program Access and Computer Defaults (SPAD).

Ricerca di un eseguibile dell'applicazione

Quando la funzione ShellExecuteEx viene chiamata con il nome di un file eseguibile nel parametro lpFile , esistono diverse posizioni in cui la funzione cerca il file. È consigliabile registrare l'applicazione nella sottochiave del Registro di sistema Percorsi app. In questo modo si evita la necessità che le applicazioni modifichino la variabile di ambiente PATH di sistema.

Il file viene cercato nei percorsi seguenti:

  • Directory di lavoro corrente
  • Solo la directory di Windows (nessuna sottodirectory viene eseguita la ricerca).
  • Directory Windows\System32 .
  • Directory elencate nella variabile di ambiente PATH.
  • Consigliato: HKEY_LOCAL_MACHINEI percorsi dell'app\Microsoft\\Windows\CurrentVersion\

Registrazione di applicazioni

Entrambe le sottochiavi del Registro di sistema Percorsi app e Applicazioni vengono usate per registrare e controllare il comportamento del sistema per conto delle applicazioni. La sottochiave Percorsi app è la posizione preferita.

Uso della sottochiave Percorsi app

In Windows 7 e versioni successive è consigliabile installare applicazioni per utente anziché per computer. Un'applicazione installata per ogni utente può essere registrata in HKEY_CURRENT_USER Software Microsoft Windows CurrentVersionApp Paths.An application that is installed for per user can be registered under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ App Paths. Un'applicazione installata per tutti gli utenti del computer può essere registrata in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.

Le voci disponibili in Percorsi app vengono usate principalmente per gli scopi seguenti:

  • Per eseguire il mapping del nome file eseguibile di un'applicazione al percorso completo del file.
  • Per anteporre le informazioni alla variabile di ambiente PATH per ogni applicazione, in base al processo.

Se il nome di una sottochiave di Percorsi app corrisponde al nome file, shell esegue due azioni:

  • La voce (predefinita) viene usata come percorso completo del file.
  • La voce Path per tale sottochiave viene pre-inserita nella variabile di ambiente PATH di tale processo. Se non è necessario, è possibile omettere il valore Path.

I potenziali problemi da tenere presenti includono:

  • Shell limita la lunghezza di una riga di comando a MAX_PATH * 2 caratteri. Se sono presenti molti file elencati come voci del Registro di sistema o i relativi percorsi sono lunghi, i nomi di file più avanti nell'elenco potrebbero andare persi perché la riga di comando viene troncata.
  • Alcune applicazioni non accettano più nomi di file in una riga di comando.
  • Alcune applicazioni che accettano più nomi di file non riconoscono il formato in cui la shell li fornisce. Shell fornisce l'elenco di parametri come stringa tra virgolette, ma alcune applicazioni potrebbero richiedere stringhe senza virgolette.
  • Non tutti gli elementi che possono essere trascinati fanno parte del file system; ad esempio stampanti. Questi elementi non hanno un percorso Win32 standard, quindi non è possibile fornire un valore lpParameters significativo a ShellExecuteEx.

L'uso della voce DropTarget evita questi potenziali problemi fornendo l'accesso a tutti i formati degli Appunti, inclusi CFSTR_SHELLIDLIST (per elenchi di file lunghi) e CFSTR_FILECONTENTS (per gli oggetti non del file system).

Per registrare e controllare il comportamento delle applicazioni con la sottochiave Percorsi app:

  1. Aggiungere una sottochiave con lo stesso nome del file eseguibile alla sottochiave Percorsi app, come illustrato nella voce del Registro di sistema seguente.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Per informazioni dettagliate sulle voci della sottochiave Percorsi app, vedere la tabella seguente.

Voce del Registro di sistema Dettagli
Valore predefinito. Percorso completo dell'applicazione. Il nome dell'applicazione specificato nella voce (impostazione predefinita) può essere indicato con o senza la relativa estensione .exe. Se necessario, la funzione ShellExecuteEx aggiunge l'estensione durante la ricerca nella sottochiave Percorsi app. La voce è del tipo di REG_SZ .
DontUseDesktopChangeRouter È obbligatorio per le applicazioni debugger per evitare deadlock delle finestre di dialogo di file durante il debug del processo di Esplora risorse. L'impostazione della voce DontUseDesktopChangeRouter produce tuttavia una gestione leggermente meno efficiente delle notifiche di modifica. La voce è del tipo di REG_DWORD e il valore è 0x1.
DropTarget Identificatore di classe (CLSID). La voce DropTarget contiene il CLSID di un oggetto (in genere un server locale anziché un server in-process) che implementa IDropTarget. Per impostazione predefinita, quando la destinazione di rilascio è un file eseguibile e non viene specificato alcun valore DropTarget, shell converte l'elenco di file eliminati in un parametro della riga di comando e lo passa a ShellExecuteEx tramite lpParameters.
Percorso Fornisce una stringa , sotto forma di elenco delimitato da punto e virgola di directory, da aggiungere alla variabile di ambiente PATH quando un'applicazione viene avviata chiamando ShellExecuteEx. È il percorso completo del .exe. È di REG_SZ. In Windows 7 e versioni successive il tipo può essere REG_EXPAND_SZ ed è in genere REG_EXPAND_SZ %ProgramFiles%. Nota: Oltre alle voci (Predefinite), Path e DropTarget riconosciute dalla shell, un'applicazione può anche aggiungere valori personalizzati alla sottochiave Percorsi app del file eseguibile. È consigliabile che gli sviluppatori di applicazioni usino la sottochiave Percorsi app per fornire un percorso specifico dell'applicazione invece di apportare aggiunte al percorso di sistema globale.
SupportedProtocols Crea una stringa contenente gli schemi del protocollo URL per una determinata chiave. Può contenere più valori del Registro di sistema per indicare quali schemi sono supportati. Questa stringa segue il formato di scheme1:scheme2. Se l'elenco non è vuoto, il file verrà aggiunto alla stringa. Questo protocollo è supportato in modo implicito quando è definito SupportedProtocols .
UseUrl Indica che l'applicazione può accettare un URL (anziché un nome file) nella riga di comando. Le applicazioni che possono aprire documenti direttamente da Internet, ad esempio web browser e lettori multimediali, devono impostare questa voce.
Quando la funzione ShellExecuteEx avvia un'applicazione e il valore UseUrl=1 non è impostato, ShellExecuteEx scarica il documento in un file locale e richiama il gestore nella copia locale.
Ad esempio, se l'applicazione dispone di questa voce impostata e un utente fa clic con il pulsante destro del mouse su un file archiviato in un server Web, il verbo Apri verrà reso disponibile. In caso contrario, l'utente dovrà scaricare il file e aprire la copia locale.
La voce UseUrl è di tipo REG_DWORD e il valore è 0x1.
In Windows Vista e versioni precedenti, questa voce indica che l'URL deve essere passato all'applicazione insieme a un nome di file locale, quando viene chiamato tramite ShellExecuteEx. In Windows 7, indica che l'applicazione può comprendere qualsiasi URL http o https passato, senza dover specificare anche il nome del file della cache. Questa chiave del Registro di sistema è associata alla chiave SupportedProtocols .

Uso della sottochiave Applicazioni

Tramite l'inclusione delle voci del Registro di sistema nella sottochiave HKEY_CLASSES_ROOT\Applications\ApplicationName.exe , le applicazioni possono fornire le informazioni specifiche dell'applicazione illustrate nella tabella seguente.

Voce del Registro di sistema Descrizione
shell\verb Fornisce il metodo verbo per chiamare l'applicazione da OpenWith. Senza una definizione di verbo specificata qui, il sistema presuppone che l'applicazione supporti CreateProcess e passi il nome del file nella riga di comando. Questa funzionalità si applica a tutti i metodi verbi, tra cui DropTarget, ExecuteCommand e Dynamic Data Exchange (DDE).
DefaultIcon Consente a un'applicazione di fornire un'icona specifica per rappresentare l'applicazione anziché la prima icona archiviata nel file .exe.
FriendlyAppName Fornisce un modo per ottenere un nome localizzabile da visualizzare per un'applicazione anziché solo le informazioni sulla versione visualizzate, che potrebbero non essere localizzabili. La query di associazione ASSOCSTR legge questo valore della voce del Registro di sistema ed esegue il fallback per usare il nome FileDescription nelle informazioni sulla versione. Se il nome è mancante, per impostazione predefinita la query di associazione corrisponde al nome visualizzato del file. Le applicazioni devono usare ASSOCSTR_FRIENDLYAPPNAME per recuperare queste informazioni per ottenere il comportamento corretto.
SupportedTypes Elenca i tipi di file supportati dall'applicazione. In questo modo, l'applicazione può essere elencata nel menu a catena della finestra di dialogo Apri con .
NoOpenWith Indica che non viene specificata alcuna applicazione per l'apertura di questo tipo di file. Tenere presente che se una sottochiave OpenWithProgIDs è stata impostata per un'applicazione per tipo di file e la sottochiave ProgID stessa non dispone anche di una voce NoOpenWith, tale applicazione verrà visualizzata nell'elenco delle applicazioni consigliate o disponibili anche se ha specificato la voce NoOpenWith. Per altre informazioni, vedere Come includere un'applicazione nella finestra di dialogo Apri con e Come escludere un'applicazione dalla finestra di dialogo Apri con .
IsHostApp Indica che il processo è un processo host, ad esempio Rundll32.exe o Dllhost.exe, e non deve essere considerato per l'aggiunta o l'inclusione del menu Start nell'elenco MFU (Most Frequently Used). Quando viene avviato con un collegamento che contiene un elenco di argomenti non Null o un ID modello utente applicazione esplicito (AppUserModelIDs), il processo può essere aggiunto (come tale collegamento). Tali collegamenti sono candidati per l'inclusione nell'elenco MFU.
NoStartPage Indica che l'eseguibile e i collegamenti dell'applicazione devono essere esclusi dal menu Start e dall'aggiunta o dall'inclusione nell'elenco MFU. Questa voce viene in genere usata per escludere strumenti di sistema, programmi di installazione e disinstallatori e file readme.
UseExecutableForTaskbarGroupIcon Fa sì che la barra delle applicazioni usi l'icona predefinita di questo eseguibile se non è presente alcun collegamento aggiungibile per questa applicazione e invece dell'icona della finestra che è stata rilevata per la prima volta.
TaskbarGroupIcon Specifica l'icona utilizzata per eseguire l'override dell'icona della barra delle applicazioni. L'icona della finestra viene in genere usata per la barra delle applicazioni. L'impostazione della voce TaskbarGroupIcon fa sì che il sistema usi l'icona dal .exe per l'applicazione.

Esempio

Di seguito sono riportati alcuni esempi di registrazioni dell'applicazione tramite la sottochiaveApplicationName.exeapplicazioni\HKEY_CLASSES_ROOT\. Tutti i valori delle voci del Registro di sistema sono di tipo REG_SZ , ad eccezione di DefaultIcon , che è di tipo REG_EXPAND_SZ .

HKEY_CLASSES_ROOT
   Applications
      wordpad.exe
         FriendlyAppName = @%SystemRoot%\System32\shell32.dll,-22069
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         SupportedTypes
            .3gp2
HKEY_CLASSES_ROOT
   Applications
      wmplayer.exe
         DefaultIcon
            (Default) = %SystemRoot%\system32\wmploc.dll,-730
HKEY_CLASSES_ROOT
   Applications
      WScript.exe
         NoOpenWith
HKEY_CLASSES_ROOT
   Applications
      photoviewer.dll
         shell
            open
               DropTarget
                  Clsid = {FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}
HKEY_CLASSES_ROOT
   Applications
      mspaint.exe
         SupportedTypes
            .bmp
            .dib
            .rle
            .jpg
            .jpeg
            .jpe
            .jfif
            .gif
            .emf
            .wmf
            .tif
            .tiff
            .png
            .ico

Registrazione di verbi e altre informazioni sull'associazione di file

Le sottochiavi registrate in HKEY_CLASSES_ROOT\SystemFileAssociations consentono a Shell di definire il comportamento predefinito degli attributi per i tipi di file e abilitare le associazioni di file condivise. Quando gli utenti modificano l'applicazione predefinita per un tipo di file, il ProgID della nuova applicazione predefinita ha priorità nel fornire verbi e altre informazioni sull'associazione. Questa priorità è dovuta alla prima voce nella matrice di associazioni. Se il programma predefinito viene modificato, le informazioni nel ProgID precedente non sono più disponibili.

Per gestire in modo proattivo le conseguenze di una modifica ai programmi predefiniti, è possibile usare HKEY_CLASSES_ROOT\SystemFileAssociations per registrare verbi e altre informazioni sull'associazione. A causa della loro posizione dopo ProgID nella matrice di associazioni, queste registrazioni sono prioritarie più basse. Queste registri SystemFileAssociations sono stabili anche quando gli utenti modificano i programmi predefiniti e forniscono un percorso per registrare i verbi secondari che saranno sempre disponibili per un particolare tipo di file. Per un esempio del Registro di sistema, vedere Registrazione di un tipo percepito più avanti in questo argomento.

L'esempio del Registro di sistema seguente mostra cosa accade quando l'utente esegue l'elemento Programmi predefiniti in Pannello di controllo per modificare l'impostazione predefinita per i file .mp3 in App2ProgID. Dopo aver modificato l'impostazione predefinita, Verb1 non è più disponibile e Verb2 diventa l'impostazione predefinita.

HKEY_CLASSES_ROOT
   .mp3
      (Default) = App1ProgID
HKEY_CLASSES_ROOT
   App1ProgID
      shell
         Verb1
HKEY_CLASSES_ROOT
   App2ProgID
      shell
         Verb2

Registrazione di un tipo percepito

I valori del Registro di sistema per i tipi percepiti vengono definiti come sottochiavi della sottochiave delRegistro di sistema HKEY_CLASSES_ROOT \SystemFileAssociations. Ad esempio, il testo del tipo percepito viene registrato come segue:

HKEY_CLASSES_ROOT
   SystemFileAssociations
      text
         shell
            edit
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"
            open
               command
                  (Default) = "%SystemRoot%\system32\NOTEPAD.EXE" "%1"

Il tipo percepito di un tipo di file è indicato includendo un valore PerceivedType nella sottochiave del tipo di file. Il valore PerceivedType viene impostato sul nome del tipo percepito registrato in HKEY_CLASSES_ROOT sottochiave\ del Registro di sistemaSystemFileAssociations, come illustrato nell'esempio precedente del Registro di sistema. Per dichiarare i file con estensione cpp come di tipo percepito "text", ad esempio, aggiungere la voce del Registro di sistema seguente:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Tipi di file

Funzionamento delle associazioni di file

Visualizzazione contenuto per tipo di file o tipo

Verifica tipo di file

Gestori dei tipi di file

Identificatori programmatici

Tipi percepiti

Matrici di associazioni