Condividi tramite


Registrazione dell'applicazione

Questo argomento illustra in che modo 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:

Annotazioni

Le applicazioni possono anche essere registrate nelle applicazioni del pannello di controllo Set Program Access and Computer Defaults (SPAD) e Set Your Default Programs (SYDP). Per informazioni sulla registrazione delle applicazioni SPAD e SYDP, vedere Guidelines for File Associations and Default Programse Set Program Access and Computer Defaults (SPAD).

Ricerca di un file 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à di applicazioni per modificare la variabile di ambiente PATH di sistema.

Il file viene cercato nei percorsi seguenti:

  • Directory di lavoro corrente.
  • Viene cercata solo la directory Windows (senza cercare nelle sottodirectory).
  • Directory Windows\System32 .
  • Directory elencate nella variabile di ambiente PATH.
  • Consigliato: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Registrazione di applicazioni

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

Uso della sottochiave Percorsi delle applicazioni

In Windows 7 e versioni successive è consigliabile installare applicazioni per utente anziché per computer. Un'applicazione installata per utente può essere registrata in 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 associare il nome di un file eseguibile di un'applicazione al percorso completo del file.
  • Per anteporre le informazioni alla variabile di ambiente PATH in base all'applicazione, per ogni processo.

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

  • La voce (Impostazione Predefinita) viene usata come percorso completo del file.
  • La voce Path per quella sottochiave viene aggiunta prima alla variabile di ambiente PATH di quel processo. Se non è necessario, è possibile omettere il valore Path.

I potenziali problemi da tenere presenti includono:

  • Limita Shell 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 essere 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 vengono Shell forniti. 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 di file system).

Per registrare e controllare il comportamento delle applicazioni con la sottochiave Percorsi delle 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, consultare la tabella seguente.

Voce di registro Dettagli
(impostazione predefinita). Percorso completamente qualificato all'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 delle applicazioni. La voce è del tipo REG_SZ.
DontUseDesktopChangeRouter È obbligatorio per le applicazioni debugger evitare situazioni di deadlock nelle finestre di dialogo durante il debug del processo di Esplora risorse di Windows. L'impostazione della voce DontUseDesktopChangeRouter produce tuttavia una gestione leggermente meno efficiente delle notifiche delle modifiche. La voce è del tipo 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 fornito alcun valore DropTarget, converte Shell 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 un elenco di directory delimitato da punto e virgola) da aggiungere alla variabile di ambiente PATH quando un'applicazione viene avviata chiamando ShellExecuteEx. È il percorso completamente qualificato del .exe. Si tratta 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 da Shell, un'applicazione può anche aggiungere valori personalizzati alla sottochiave Percorsi app del file eseguibile. Si consiglia agli sviluppatori di applicazioni di usare la sottochiave Percorsi app per fornire un percorso specifico dell'applicazione anziché aggiungere al percorso di sistema globale.
SupportedProtocols Crea una stringa che contiene gli schemi di 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 supportedProtocols è definito.
UtilizzaURL 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 ha impostato questa voce e un utente fa clic con il pulsante destro del mouse su un file archiviato in un server Web, verrà reso disponibile l'opzione Apri verb . 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 di voci del Registro di sistema nella sottochiave HKEY_CLASSES_ROOT\Applicazioni\ApplicationName.exe , le applicazioni possono fornire le informazioni specifiche dell'applicazione illustrate nella tabella seguente.

Voce di registro Descrizione
shell\verb Fornisce il verb metodo per chiamare l'applicazione da OpenWith. Senza una verb definizione 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 verb metodi, inclusi DropTarget, ExecuteCommand e Dynamic Data Exchange (DDE).
IconaPredefinita Consente a un'applicazione di fornire un'icona specifica per rappresentare l'applicazione anziché la prima icona archiviata nel file .exe.
FriendlyAppName Consente di 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 non è presente, 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.
Tipi Supportati Elenca i tipi di file supportati dall'applicazione. In questo modo, l'applicazione può essere elencata nel menu a cascata 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 ha anche 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 nulli o un ID modello utente applicazione esplicito (AppUserModelIDs), il processo può essere bloccato (come tale collegamento). Tali scorciatoie sono candidate per l'inclusione nell'elenco MFU.
NessunaPaginaIniziale 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 leggimi.
UseExecutableForTaskbarGroupIcon Fa sì che la barra delle applicazioni usi l'icona predefinita di questo eseguibile se non è disponibile alcun collegamento bloccabile per questa applicazione e anziché l'icona della finestra che è stata rilevata per la prima volta.
Icona del gruppo nella barra delle applicazioni 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. Se si imposta la voce TaskbarGroupIcon, il sistema userà invece l'icona del .exe per l'applicazione.

Esempi

Di seguito sono riportati alcuni esempi di registrazioni dell'applicazione tramite la sottochiave ApplicationName.exe\applicazioni\ 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 di associazione dei file

Le sottochiavi registrate in HKEY_CLASSES_ROOT\SystemFileAssociations consentono 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 la priorità per fornire verbi e altre informazioni sull'associazione. Questa priorità è dovuta alla prima voce nell'array associativo. Se il programma predefinito viene modificato, le informazioni contenute 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 posizione successiva al ProgID nella matrice di associazioni, queste registrazioni hanno priorità inferiore. Questi systemFileAssociationsregistration sono stabili anche quando gli utenti modificano i programmi predefiniti e forniscono un percorso per registrare verbi secondari che saranno sempre disponibili per un particolare tipo di file. Per un esempio di registro, vedere Registrazione di un tipo percepito nella sezione seguente di questo argomento.

L'esempio seguente del Registro di sistema mostra cosa accade quando l'utente esegue l'elemento Programmi predefiniti nel Pannello di controllo per modificare il valore predefinito per i file .mp3 in App2ProgID. Dopo aver modificato il valore predefinito, 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 del Registro 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 .cpp come di tipo riconosciuto "testo", ad esempio, aggiungere la seguente voce nel Registro di sistema:

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Tipi di File

funzionamento delle associazioni di file

la visualizzazione del contenuto per tipo di file o genere

Verificatore del tipo di file

gestori di tipi di file

Identificatori programmatici

tipi percepiti

delle matrici di associazioni