Comment un programme qui n'est pas sur mon chemin est-il exécuté? [dupliquer]

57

Dupliquer possible:
Pourquoi suis-je capable d'exécuter un programme qui ne se trouve pas dans ma variable d'environnement PATH?

J'enseignais% PATH à un collègue et j'ai découvert que si je lance "Firefox", cela fonctionne, mais j'ai été surpris de constater que ce n'était pas sur mon chemin.

Qu'est-ce que je rate?

Mathew
la source
2
Ça dépend du contexte. Si vous entrez "firefox" à partir d'une ligne de commande, firefox.exe doit figurer dans le chemin ou dans les dossiers Windows ou Windows \ System32. Si vous entrez "Firefox" dans la boîte de dialogue Exécuter, le registre App Paths est utilisé. Firefox.exe y est donc enregistré.
boot13
Merci boot13, je ne connaissais pas les clés de registre des chemins d'accès d'applications.
Mathew

Réponses:

101

Si vous essayez d'exécuter un fichier exécutable en spécifiant uniquement son nom, Windows recherche le fichier aux emplacements suivants :

  1. Le répertoire de travail actuel.
  2. Le Windowsrépertoire uniquement (aucun sous-répertoire n'est recherché).
  3. Le Windows\System32répertoire.
  4. Répertoires répertoriés dans la variable d’environnement PATH.
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(aussi HKEY_CURRENT_USERdepuis Windows 7)

Microsoft recommande en fait d’inscrire des applications dans la App Pathssous - clé afin d’éviter que celles-ci n’aient à modifier la PATHvariable d’environnement système . Le programme d'installation de l'application va enregistrer l'exécutable.

JC2k8
la source
3
Une des meilleures réponses à une question que j'ai jamais vue. +1
Everett
C'était ça, merci monsieur. Apprendre quelque chose de nouveau chaque jour.
Mathew
8
@ Matthieu, de rien. N'oubliez pas que la sous-clé "App Paths" existe également dans la ruche HKCU pour les applications installées pour un seul utilisateur .
JC2k8
1
C’est la raison pour laquelle je n’ai jamais vraiment eu à travailler avec PATH tant que je n’étais pas passé du développement .NET au développement Java. Je n'ai jamais vraiment réfléchi à la raison pour laquelle tout dans le développement .NET "fonctionne"!
Stephen Swensen
2
Cela n'est vrai que pour la boîte de dialogue Exécuter Windows, dans cmd.exe et powershell uniquement 1. à 4. sont utilisés, voir aussi le commentaire de boot13.
Alexander