Comment la boîte de dialogue Exécuter sait-elle où se trouvent les applications?


72

En tant qu’utilisateur expérimenté, j’utilise fréquemment la boîte de dialogue Exécuter.

Je peux comprendre pourquoi les commandes suivantes fonctionnent, comme dans la PATHvariable d'environnement.

mspaint
diskmgmt.msc
explorer

Ces commandes fonctionnent également dans CMD.

Les commandes ci-dessous fonctionnent en mode d'exécution, mais elles ne le sont pas PATHet ne fonctionnent pas dans CMD.

firefox
winword
iexplore

Comment Run sait-il où se trouvent ces fichiers?

Réponses:


90

Lorsque vous exécutez une commande à partir de la boîte de dialogue Exécuter, le système examine la App Pathsclé de registre ici:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

et

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

EXEMPLE

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\filezilla.exe

(default) les données de valeur ont le chemin complet de l'exécutable.

S'il n'est pas trouvé, il examine chaque dossier inclus dans PATH.

Alors que l'invite de commande ne fait pas référence à ces clés de registre. Il ne fait que rechercher le CHEMIN.


5
Ah, cela explique probablement pourquoi vous ne pouvez pas avoir plusieurs programmes du même nom qui fonctionnent avec des options ouvertes. Mauvaise conception.
curieuxdannii

2
Oui presque. Mais Ouvrir avec dialogue lit HKCR\ApplicationsetRegisteredApplications
w32sh


6
Vous pouvez bien sûr utiliser la commande startintégrée qui effectue une recherche dans les chemins des applications.
Neil

1
Ceci est très bien documenté ici . J'ai également expliqué comment cmd effectue sa recherche ici - il s'agit d'un cas particulier, distinct des API Win32.
Bob

4

La réponse de w32sh indique à juste titre que les clés supplémentaires recherchées par la boîte de dialogue Exécuter sont ici:

  • HKEY_CURRENT_USER \ LOGICIEL \ Microsoft \ Windows \ CurrentVersion \ App Paths \
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Chemins \

Il existe une documentation officielle pour ces chemins .

Un fait important à propos de ces clés est que le nom de la clé (par exemple "filezilla.exe") ne doit en aucun cas correspondre au chemin complet. Sous Windows 7, la valeur peut même être une simple ligne de commande, similaire à ce qui peut être utilisé comme "cible" d'un raccourci.

Par exemple, j'avais l'habitude d'avoir cela dans mon registre:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="\"C:\\WINDOWS\\system32\\javaw.exe\" -Xms24M -Xmx512M -jar \"C:\\Program Files\\jEdit\\jedit.jar\" -reuseview"

Je n'arrive pas à faire fonctionner cela dans Windows 10, mais vous pouvez toujours pointer n'importe quel fichier, y compris un fichier de commandes, par exemple

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="C:\\Program Files\\jEdit\\run-jedit.bat"

Cela vous permet de taper "jedit" ou "jedit C: \ foo \ bar \ quelque chose.txt" pour exécuter la JVM avec les options appropriées et lancer / réutiliser jEdit .

Autant que je sache, le nom de la clé doit se terminer par ".exe". Par conséquent, pour créer un alias "abc", vous créez une clé "abc.exe", même si elle ne pointe pas vers un fichier ".exe". .


Cela ne fonctionne pas ici si j'utilise des commutateurs supplémentaires après le nom du fichier exécutable.
w32sh

@ w32sh Hm, je pense que cela a changé dans Win 10 :(
IMSoP

-1

Il existe une variable d’environnement appelée PATH ou% PATH% dans la ligne de commande. Il contient une série d’endroits dans lesquels effectuer une recherche.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.