Inscription d’application

Cette rubrique explique comment les applications peuvent exposer les informations sur elles-mêmes nécessaires pour activer certains scénarios. Cela inclut les informations nécessaires pour localiser l’application, les verbes pris en charge par l’application et les types de fichiers qu’une application peut gérer.

Cette rubrique est organisée comme suit :

Notes

Les applications peuvent également être inscrites dans les applications du panneau de configuration Set Program Access and Computer Defaults (SPAD) et Set Your Default Programs (SYDP). Pour plus d’informations sur l’inscription des applications SPAD et SYDP, consultez Recommandations pour les associations de fichiers et les programmes par défaut, et Définir l’accès aux programmes et les paramètres par défaut de l’ordinateur (SPAD).

Recherche d’un exécutable d’application

Lorsque la fonction ShellExecuteEx est appelée avec le nom d’un fichier exécutable dans son paramètre lpFile , la fonction recherche le fichier à plusieurs endroits. Nous vous recommandons d’inscrire votre application dans la sous-clé de Registre Chemins d’accès aux applications. Cela évite aux applications de modifier la variable d’environnement PATH système.

Le fichier est recherché aux emplacements suivants :

  • Le répertoire de travail actuel
  • Répertoire Windows uniquement (aucun sous-répertoire n’est recherché).
  • Répertoire Windows\System32 .
  • Répertoires répertoriés dans la variable d’environnement PATH.
  • Recommandé : chemins d’accès\ del’application MicrosoftWindows\CurrentVersion\HKEY_LOCAL_MACHINE\SOFTWARE\

Inscription d’applications

Les sous-clés de Registre Chemins d’accès aux applications et Applications sont utilisées pour inscrire et contrôler le comportement du système pour le compte des applications. La sous-clé Chemins d’accès aux applications est l’emplacement par défaut.

Utilisation de la sous-clé Chemins d’accès aux applications

Dans Windows 7 et versions ultérieures, nous vous recommandons vivement d’installer des applications par utilisateur plutôt que par ordinateur. Une application installée pour chaque utilisateur peut être inscrite sous HKEY_CURRENT_USER\Chemins d’accès\ del’applicationMicrosoft\Windows\CurrentVersion\. Une application installée pour tous les utilisateurs de l’ordinateur peut être inscrite sous HKEY_LOCAL_MACHINE\Logiciels\Microsoft\Windows\CurrentVersion\App Paths.

Les entrées trouvées sous Chemins d’accès d’application sont principalement utilisées aux fins suivantes :

  • Pour mapper le nom de fichier exécutable d’une application au chemin d’accès complet de ce fichier.
  • Pour prédéfinier les informations à la variable d’environnement PATH par application et par processus.

Si le nom d’une sous-clé de Chemins d’accès d’application correspond au nom de fichier, l’interpréteur de commandes effectue deux actions :

  • L’entrée (par défaut) est utilisée comme chemin d’accès complet du fichier.
  • L’entrée Path de cette sous-clé est pré-pendée à la variable d’environnement PATH de ce processus. Si cela n’est pas obligatoire, la valeur path peut être omise.

Les problèmes potentiels à connaître sont les suivants :

  • L’interpréteur de commandes limite la longueur d’une ligne de commande à MAX_PATH * 2 caractères. Si de nombreux fichiers sont répertoriés en tant qu’entrées de Registre ou si leurs chemins sont longs, les noms de fichiers plus loin dans la liste peuvent être perdus lorsque la ligne de commande est tronquée.
  • Certaines applications n’acceptent pas plusieurs noms de fichiers dans une ligne de commande.
  • Certaines applications qui acceptent plusieurs noms de fichiers ne reconnaissent pas le format dans lequel l’interpréteur de commandes les fournit. L’interpréteur de commandes fournit la liste de paramètres sous forme de chaîne entre guillemets, mais certaines applications peuvent nécessiter des chaînes sans guillemets.
  • Tous les éléments qui peuvent être déplacés ne font pas partie du système de fichiers ; par exemple, les imprimantes. Ces éléments n’ayant pas de chemin Win32 standard, il n’existe aucun moyen de fournir une valeur lpParameters significative à ShellExecuteEx.

L’utilisation de l’entrée DropTarget permet d’éviter ces problèmes potentiels en fournissant l’accès à tous les formats du Presse-papiers, y compris les CFSTR_SHELLIDLIST (pour les listes de fichiers longues) et les CFSTR_FILECONTENTS (pour les objets non système de fichiers).

Pour inscrire et contrôler le comportement de vos applications avec la sous-clé Chemins d’accès aux applications :

  1. Ajoutez une sous-clé portant le même nom que votre fichier exécutable à la sous-clé Chemins d’accès aux applications, comme indiqué dans l’entrée de Registre suivante.

    HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
       SOFTWARE
          Microsoft
             Windows
                CurrentVersion
                   App Paths
                      file.exe
                         (Default)
                         DontUseDesktopChangeRouter
                         DropTarget
                         Path
                         UseUrl
    
  2. Consultez le tableau suivant pour plus d’informations sur les entrées de sous-clé Chemins d’accès aux applications.

Entrée de Registre Détails
(Par défaut) Chemin complet de l’application. Le nom de l’application fourni dans l’entrée (Par défaut) peut être indiqué avec ou sans son extension .exe. Si nécessaire, la fonction ShellExecuteEx ajoute l’extension lors de la recherche de la sous-clé Chemins d’accès aux applications. L’entrée est de type REG_SZ .
DontUseDesktopChangeRouter Est obligatoire pour les applications de débogueur afin d’éviter les interblocages de boîte de dialogue de fichiers lors du débogage du processus de Explorer Windows. Toutefois, la définition de l’entrée DontUseDesktopChangeRouter génère une gestion légèrement moins efficace des notifications de modification. L’entrée est de type REG_DWORD et la valeur est 0x1.
DropTarget Identificateur de classe (CLSID). L’entrée DropTarget contient le CLSID d’un objet (généralement un serveur local plutôt qu’un serveur in-process) qui implémente IDropTarget. Par défaut, lorsque la cible de déplacement est un fichier exécutable et qu’aucune valeur DropTarget n’est fournie, l’interpréteur de commandes convertit la liste des fichiers supprimés en paramètre de ligne de commande et la transmet à ShellExecuteEx via lpParameters.
Chemin d’accès Fournit une chaîne (sous la forme d’une liste de répertoires séparés par des points-virgules) à ajouter à la variable d’environnement PATH lorsqu’une application est lancée en appelant ShellExecuteEx. Il s’agit du chemin d’accès complet au .exe. Il est de REG_SZ. Dans Windows 7 et versions ultérieures, le type peut être REG_EXPAND_SZ et est généralement REG_EXPAND_SZ %ProgramFiles%. Note: En plus des entrées (Par défaut), Path et DropTarget reconnues par l’interpréteur de commandes, une application peut également ajouter des valeurs personnalisées à la sous-clé Chemins d’application de son fichier exécutable. Nous encourageons les développeurs d’applications à utiliser la sous-clé Chemins d’accès des applications pour fournir un chemin d’accès spécifique à l’application au lieu d’effectuer des ajouts au chemin d’accès système global.
SupportedProtocols Crée une chaîne qui contient les schémas de protocole d’URL pour une clé donnée. Cela peut contenir plusieurs valeurs de Registre pour indiquer les schémas pris en charge. Cette chaîne suit le format de scheme1:scheme2. Si cette liste n’est pas vide, file: est ajouté à la chaîne. Ce protocole est implicitement pris en charge lorsque SupportedProtocols est défini.
UseUrl Indique que votre application peut accepter une URL (au lieu d’un nom de fichier) sur la ligne de commande. Les applications qui peuvent ouvrir des documents directement à partir d’Internet, telles que les navigateurs web et les lecteurs multimédias, doivent définir cette entrée.
Lorsque la fonction ShellExecuteEx démarre une application et que la valeur UseUrl=1 n’est pas définie, ShellExecuteEx télécharge le document dans un fichier local et appelle le gestionnaire sur la copie locale.
Par exemple, si l’application a cette entrée définie et qu’un utilisateur clique avec le bouton droit sur un fichier stocké sur un serveur web, le verbe Ouvrir est mis à disposition. Si ce n’est pas le cas, l’utilisateur devra télécharger le fichier et ouvrir la copie locale.
L’entrée UseUrl est de REG_DWORD type et la valeur est 0x1.
Dans Windows Vista et les versions antérieures, cette entrée indique que l’URL doit être transmise à l’application avec un nom de fichier local, lorsqu’elle est appelée via ShellExecuteEx. Dans Windows 7, cela indique que l’application peut comprendre n’importe quelle URL http ou https qui lui est passée, sans avoir à fournir également le nom du fichier de cache. Cette clé de Registre est associée à la clé SupportedProtocols .

Utilisation de la sous-clé Applications

Grâce à l’inclusion d’entrées de Registre sous la sous-clé HKEY_CLASSES_ROOT\Applications\ApplicationName.exe , les applications peuvent fournir les informations spécifiques à l’application indiquées dans le tableau suivant.

Entrée de Registre Description
shell\verb Fournit la méthode verb pour appeler l’application à partir d’OpenWith. Sans définition de verbe spécifiée ici, le système suppose que l’application prend en charge CreateProcess et transmet le nom de fichier sur la ligne de commande. Cette fonctionnalité s’applique à toutes les méthodes de verbe, y compris DropTarget, ExecuteCommand et Dynamic Data Exchange (DDE).
DefaultIcon Permet à une application de fournir une icône spécifique pour représenter l’application au lieu de la première icône stockée dans le fichier .exe.
FriendlyAppName Fournit un moyen d’obtenir un nom localisable à afficher pour une application au lieu d’afficher uniquement les informations de version, qui peuvent ne pas être localisables. La requête d’association ASSOCSTR lit cette valeur d’entrée de Registre et revient à utiliser le nom FileDescription dans les informations de version. Si ce nom est manquant, la requête d’association utilise par défaut le nom complet du fichier. Les applications doivent utiliser ASSOCSTR_FRIENDLYAPPNAME pour récupérer ces informations afin d’obtenir le comportement approprié.
SupportedTypes Répertorie les types de fichiers pris en charge par l’application. Cela permet à l’application d’être listée dans le menu en cascade de la boîte de dialogue Ouvrir avec .
NoOpenWith Indique qu’aucune application n’est spécifiée pour l’ouverture de ce type de fichier. N’oubliez pas que si une sous-clé OpenWithProgIDs a été définie pour une application par type de fichier et que la sous-clé ProgID elle-même n’a pas non plus d’entrée NoOpenWith, cette application apparaît dans la liste des applications recommandées ou disponibles même si elle a spécifié l’entrée NoOpenWith. Pour plus d’informations, consultez Guide pratique pour inclure une application dans la boîte de dialogue Ouvrir avec et Comment exclure une application de la boîte de dialogue Ouvrir avec.
IsHostApp Indique que le processus est un processus hôte, tel que Rundll32.exe ou Dllhost.exe, et ne doit pas être pris en compte pour l’épinglage ou l’inclusion du menu Démarrer dans la liste MFU (Most Frequently Used). Lorsqu’il est lancé avec un raccourci qui contient une liste d’arguments non null ou des ID de modèle utilisateur d’application explicites (AppUserModelIDs), le processus peut être épinglé (en tant que raccourci). Ces raccourcis sont des candidats à l’inclusion dans la liste MFU.
NoStartPage Indique que l’exécutable et les raccourcis de l’application doivent être exclus du menu Démarrer et de l’épinglage ou de l’inclusion dans la liste MFU. Cette entrée est généralement utilisée pour exclure les outils système, les programmes d’installation et les programmes de désinstallation, ainsi que les fichiers Lisez-moi.
UseExecutableForTaskbarGroupIcon Fait en sorte que la barre des tâches utilise l’icône par défaut de cet exécutable s’il n’existe aucun raccourci épinglé pour cette application, et au lieu de l’icône de la fenêtre qui a été rencontrée pour la première fois.
TaskbarGroupIcon Spécifie l’icône utilisée pour remplacer l’icône de la barre des tâches. L’icône de fenêtre est normalement utilisée pour la barre des tâches. Si vous définissez l’entrée TaskbarGroupIcon, le système utilise plutôt l’icône du .exe pour l’application.

Exemples

Voici quelques exemples d’inscriptions d’applications via la sous-clé HKEY_CLASSES_ROOT\Applications\ApplicationName.exe . Toutes les valeurs d’entrée de Registre sont de REG_SZ type, à l’exception de DefaultIcon qui est de REG_EXPAND_SZ type.

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

Inscription de verbes et d’autres informations d’association de fichiers

Les sous-clés inscrites sous HKEY_CLASSES_ROOT\SystemFileAssociations permettent à l’interpréteur de commandes de définir le comportement par défaut des attributs pour les types de fichiers et d’activer les associations de fichiers partagés. Lorsque les utilisateurs modifient l’application par défaut pour un type de fichier, le ProgID de la nouvelle application par défaut a la priorité de fournir des verbes et d’autres informations d’association. Cette priorité est due au fait qu’il s’agit de la première entrée dans le tableau d’association. Si le programme par défaut est modifié, les informations sous le ProgID précédent ne sont plus disponibles.

Pour gérer de manière proactive les conséquences d’une modification des programmes par défaut, vous pouvez utiliser HKEY_CLASSES_ROOT\SystemFileAssociations pour inscrire des verbes et d’autres informations d’association. En raison de leur emplacement après le ProgID dans le tableau d’association, ces inscriptions sont de priorité inférieure. Ces SystemFileAssociationsregistrations sont stables même lorsque les utilisateurs modifient les programmes par défaut et fournissent un emplacement pour inscrire des verbes secondaires qui seront toujours disponibles pour un type de fichier particulier. Pour obtenir un exemple de Registre, consultez Inscription d’un type perçu plus loin dans cette rubrique.

L’exemple de Registre suivant montre ce qui se passe lorsque l’utilisateur exécute l’élément Programmes par défaut dans Panneau de configuration pour modifier la valeur par défaut des fichiers .mp3 en App2ProgID. Après avoir modifié la valeur par défaut, Verb1 n’est plus disponible et Verb2 devient la valeur par défaut.

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

Inscription d’un type perçu

Les valeurs de Registre pour les types perçus sont définies en tant que sous-clés de la sous-clé de RegistreSystemFileAssociationsHKEY_CLASSES_ROOT\. Par exemple, le texte de type perçu est inscrit comme suit :

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

Le type perçu d’un type de fichier est indiqué en incluant une valeur PerceivedType dans la sous-clé du type de fichier. La valeur PerceivedType est définie sur le nom du type perçu inscrit sous HKEY_CLASSES_ROOT sous la\ sous-clé de RegistreSystemFileAssociations, comme indiqué dans l’exemple de Registre précédent. Pour déclarer les fichiers .cpp comme étant de type « texte », par exemple, ajoutez l’entrée de Registre suivante :

HKEY_CLASSES_ROOT
   .cpp
      PerceivedType = text

Types de fichiers

Fonctionnement des associations de fichiers

Affichage de contenu par type de fichier ou par type de fichier

Vérificateur de type de fichier

Gestionnaires de types de fichiers

Identificateurs programmatiques

Types perçus

Tableaux d’association