50 votes

Pourquoi les modifications apportées à mon PATH ne sont-elles pas reconnues ?

Lorsque je mets à jour mon PATH à l'aide de la boîte de dialogue intégrée Variables d'environnement ou de quelque chose comme Éditeur de chemin d'accès et que j'ouvre ensuite une fenêtre de commande, les modifications apportées à mon chemin d'accès ne seront pas enregistrées dans la console, en fonction de l'endroit où la fenêtre de commande a été lancée.

Par exemple, si je modifie mon PATH et que je lance cmd.exe à partir du menu Démarrer ou d'un raccourci sur le Bureau, mon PATH semble correct : il a été mis à jour avec succès ; cependant, si je lance cmd.exe à partir d'un raccourci n'importe où autres que le menu Démarrer ou le Bureau, le nouveau PATH n'est pas lu et j'obtiens l'ancien chemin à la place. C'est très étrange.

J'ai essayé de lancer l'invite de commande à partir d'un raccourci sur le bureau et cela fonctionne bien. exactement le même raccourci dans un sous-dossier sur le bureau, et j'ai le problème du PATH non mis à jour.

Je me rends compte que c'est assez difficile à expliquer, alors j'ai créé un screencast pour montrer ce problème en action . Le site est mort.

Voici une capture d'écran du raccourci de l'invite de commande tel qu'il apparaît dans ce screencast :

Command prompt shortcut settings

Il s'agit de Windows Vista Home Premium SP2.

38voto

Jake McGraw Points 16515

Lorsque vous démarrez un nouveau processus (par exemple une nouvelle ligne de commande), il récupère les variables d'environnement du processus qui le démarre. Lorsque le chemin d'accès est mis à jour, seul le processus effectuant la mise à jour peut savoir qu'il a changé, et le paramètre ne se propage pas jusqu'à ce que vous vous reconnectiez (pour les paramètres par utilisateur) ou que vous redémarriez (pour les paramètres systémiques)

34voto

Charles Roper Points 10231

Comme le suggère Rowland, lorsqu'il démarre un nouveau processus, il lit les variables d'environnement du processus qui le démarre. Par conséquent, lors du lancement d'une fenêtre de commande à partir de l'option Menu Démarrer ou le Bureau il lit les variables d'environnement à partir de explorer.exe qui, comme le suggère grawity, détecte les changements de paramètres d'environnement dans le registre et je vois ainsi mon nouveau PATH dans les commandes lancées à partir du bureau ou du menu Démarrer.

La raison pour laquelle je ne vois pas de mises à jour de mon PATH dans le screencast que j'ai posté est que j'avais initialement lancé une fenêtre d'exploration en utilisant FARR réalisation FindAndRunRobot.exe le processus parental. FARR ne détecte pas automatiquement les changements d'environnement et, par conséquent, les processus enfants créés à partir de lui ne prennent pas en compte le nouveau PATH. J'avais aussi ' Lancer le dossier Windows dans un processus séparé L'option ' est définie dans Explorer, ce qui signifie que toutes les fenêtres explorer.exe que j'ai ouvertes après la fenêtre initiale ouverte par FARR étaient également des enfants de FARR .

En désactivant l'option Lancer le dossier Windows dans un processus séparé L'option ', de nouveaux explorer.exe ne sont pas créés sous FARR, ce qui résout mon problème. Cependant, je lance également la console Windows et d'autres choses directement à partir de FARR ; ces derniers obtiennent également les anciens paramètres d'environnement. Si je redémarre FARR, les nouveaux paramètres d'environnement sont propagés.

Voici une capture d'écran de Process Explorer montrant les processus créés à partir de FARR. Aucun de ces processus ne reçoit les nouveaux paramètres d'environnement de l'application de premier niveau explorer.exe à moins de redémarrer FARR :

process explorer

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X