Inscription d’application
Cette rubrique explique comment les applications peuvent exposer des informations sur elles-mêmes nécessaires pour activer certains scénarios. Cela inclut des 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 :
- recherche d’un exécutable d’application
- Inscrire des applications
- inscrire des verbes et d’autres informations d’association de fichiers
- Inscrire un de type perçu
- rubriques connexes
Note
Les applications peuvent également être inscrites dans les applications de 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 Instructions pour les associations de fichiers et les programmes par défaut, et définir l’accès au programme 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, il existe plusieurs emplacements où la fonction recherche le fichier. Nous vous recommandons d’inscrire votre application dans la sous-clé de Registre chemins d’application. Cela évite la nécessité pour les applications de modifier la variable d’environnement PATH système.
Le fichier est recherché aux emplacements suivants :
- Répertoire de travail actuel.
- Le 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é : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Inscription d’applications
Les chemins d’accès d’application et les sous-clés de Registre applications sont utilisés pour inscrire et contrôler le comportement du système pour le compte des applications. La sous-clé chemins d’application est l’emplacement par défaut.
Utilisation de la sous-clé Chemins d’accès d’application
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\Software\Microsoft\Windows\CurrentVersion\App Paths. Une application installée pour tous les utilisateurs de l’ordinateur peut être inscrite sous HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.
Les entrées trouvées sous chemins d’accès aux applications sont utilisées principalement à des fins suivantes :
- Pour mapper le nom de fichier exécutable d’une application au chemin complet de ce fichier.
- Pour pré-pender des informations sur la variable d’environnement PATH par application, par processus.
Si le nom d’une sous-clé de chemins 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 complet du fichier.
- L’entrée Path de cette sous-clé est pré-pendée à la variable d’environnement PATH de ce processus. Si ce n’est pas nécessaire, la valeur Path peut être omise.
Les problèmes potentiels à prendre en compte sont les suivants :
- L’interpréteur de commandes limite la longueur d’une ligne de commande à MAX_PATH * 2 caractères. S’il existe de nombreux fichiers répertoriés en tant qu’entrées de Registre ou que leurs chemins d’accès sont longs, les noms de fichiers plus loin dans la liste peuvent être perdus à mesure que 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’ont pas de chemin Win32 standard. Il n’existe donc aucun moyen de fournir une valeur significative lpParameters pour ShellExecuteEx.
L’utilisation de l’entrée DropTarget évite ces problèmes potentiels en fournissant l’accès à tous les formats 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:
Ajoutez une sous-clé portant le même nom que votre fichier exécutable à la sous-clé Chemins d’application, 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
Consultez le tableau suivant pour plus d’informations sur les entrées de sous-clé chemins d’application.
Entrée du 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 de .exe. Si nécessaire, la fonction ShellExecuteEx ajoute l’extension lors de la recherche chemins d’application sous-clé. L’entrée est du type REG_SZ. |
DontUseDesktopChangeRouter | Est obligatoire pour les applications de débogueur afin d’éviter les blocages de boîte de dialogue de fichiers lors du débogage du processus de l’Explorateur 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 du 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 suppression 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 le transmet à ShellExecuteEx via lpParameters. |
Chemin | Fournit une chaîne (sous la forme d’une liste séparée par des points-virgules de répertoires) à ajouter à la variable d’environnement PATH lorsqu’une application est lancée en appelant ShellExecuteEx. Il s’agit du chemin complet du .exe. C’est de REG_SZ. Dans Windows 7 et versions ultérieures, le type peut être REG_EXPAND_SZet est généralement REG_EXPAND_SZ %ProgramFiles%.
Remarque : 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 sous-clé. Nous encourageons les développeurs d’applications à utiliser les chemins d’application sous-clé pour fournir un chemin 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 quels schémas sont pris en charge. Cette chaîne suit le format de scheme1 :scheme2. Si cette liste n’est pas vide, fichier : sera 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, comme 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 ce jeu d’entrées et qu’un utilisateur clique avec le bouton droit sur un fichier stocké sur un serveur web, le verbe Ouvrir sera 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 type REG_DWORD 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, il indique que l’application peut comprendre n’importe quelle URL http ou https qui lui est transmise, 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 du Registre | Description |
---|---|
shell\verb | Fournit la méthode détaillée pour appeler l’application à partir d’OpenWith. Sans définition de verbe spécifié ici, le système part du principe que l’application prend en charge CreateProcesset transmet le nom de fichier sur la ligne de commande. Cette fonctionnalité s’applique à toutes les méthodes détaillées, notamment 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 localisées. 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 correspond par défaut au 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 répertoriée dans le menu cascade de l'Ouvrir avec boîte de dialogue. |
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 How to Include an Application in the Open With Dialog Box and How to exclude an Application from the Open with Dialog Box. |
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 démarrer menu épinglage ou inclusion dans la liste MFU (Most Frequently Used). Lorsqu’il est lancé avec un raccourci qui contient une liste d’arguments non null ou un ID de modèle utilisateur d’application explicite (AppUserModelIDs), le processus peut être épinglé (comme 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 désinstallations, et 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 barre des tâches. L’icône de fenêtre est normalement utilisée pour la barre des tâches. La définition de l’entrée TaskbarGroupIcon entraîne l’utilisation de l’icône à partir de l'.exe de l’application à la place. |
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 type REG_SZ, à l’exception de DefaultIcon de type 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
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ées. 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é en fournissant des verbes et d’autres informations d’association. Cette priorité est due à sa première entrée dans le tableau d’associations. 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 prioritaires. 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 Inscrire 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 le Panneau de configuration pour modifier la valeur par défaut des fichiers .mp3 sur 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 Registre HKEY_CLASSES_ROOT\SystemFileAssociations sous-clé de Registre. Par exemple, le type perçu texte 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 enregistré sous HKEY_CLASSES_ROOT\SystemFileAssociations sous-clé de Registre, comme indiqué dans l’exemple de Registre précédent. Pour déclarer .cpp fichiers comme étant de type « text », par exemple, ajoutez l’entrée de Registre suivante :
HKEY_CLASSES_ROOT
.cpp
PerceivedType = text