J'avais besoin d'ajouter une nouvelle entrée à ma variable PATH. C'est une activité courante pour moi dans mon travail, mais j'ai récemment commencé à utiliser Windows 8. J'ai supposé que le processus serait similaire à Windows 7, Vista, XP ...
Voici ma séquence d'événements:
- Ouvrez les propriétés du système (Démarrer-> [tapez "Panneau de configuration"] -> Panneau de configuration \ Système et sécurité \ Système -> Paramètres système avancés -> Variables d'environnement)
- Ajoutez le nouveau chemin au début de ma variable USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Ouverture d'une invite de commande (Démarrer -> [tapez "invite de commande" entrez] -> [tapez "chemin" entrez]
Ma nouvelle entrée de chemin n'est pas disponible (voir l'image et la vidéo ci-jointes). J'ai dupliqué exactement le même processus sur une machine Windows 7 et cela a fonctionné.
MODIFIER
Vidéo sur les variables d'environnement et l'invite de commande de Windows 8
MODIFIER
Ce n'est certainement pas le comportement de Windows 7. Regardez cette vidéo pour voir le comportement que j'attends de travailler dans Windows 7. http://youtu.be/95JXY5X0fII
EDIT 31/05/2013
Donc, après beaucoup de frustration, j'ai écrit une petite application C # pour tester l' WM_SETTINGCHANGE
événement. Ce code reçoit l'événement dans Windows 7 et Windows 8. Cependant, dans Windows 8 sur mon système, je n'obtiens pas le chemin correct; mais je le fais dans Windows 7. Cela ne pouvait pas être reproduit dans d'autres systèmes Windows 8.
Voici le code C #.
using System;
using Microsoft.Win32;
public sealed class App
{
static void Main()
{
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(OnUserPreferenceChanging);
Console.WriteLine("Waiting for system events.");
Console.WriteLine("Press <Enter> to exit.");
Console.ReadLine();
}
static void OnUserPreferenceChanging(object sender, UserPreferenceChangingEventArgs e)
{
Console.WriteLine("The user preference is changing. Category={0}", e.Category);
Console.WriteLine("path={0}", System.Environment.GetEnvironmentVariable("PATH"));
}
}
OnUserPreferenceChanging
est équivalent à WM_SETTINGCHANGE
Programme C # exécuté dans Windows 7 (vous pouvez voir l'événement se produire et il choisit le bon chemin).
Programme C # exécuté sous Windows 8 (vous pouvez voir l'événement se produire, mais le mauvais chemin).
Il y a quelque chose dans mon environnement qui précipite ce problème. Cependant, est-ce un bug de Windows 8?
EDIT 2014-04-28
En raison de cela et de plusieurs autres problèmes, nous n'utilisons plus Windows 8 sur le bureau. Nous n'avons pas d'environnement pour continuer à tester et expérimenter ce problème. Il n'y a toujours pas de réponse ou de résolution à ce problème pour nous. Les réponses ci-dessous n'ont pas résolu notre problème.
cmd
lors du lancement d'une nouvelle instance. Bien sûr, le déjà en cours d'exécutioncmd
n'a pas obtenu l'environnement mis à jour.Réponses:
Si vous lancez l'invite de commande à partir du menu Démarrer ou d'un raccourci sur votre barre des tâches, vous devez soit:
explorer
. Tuez-le et relancez-le.explorer
).explorer
).L'environnement ne se met pas à jour immédiatement car les environnements sont hérités de leur processus parent, à l'exception de
explorer
, qui est démarré par le système lors de la connexion. Voici comment il se comporte sur mon système Windows 7.Ainsi, la modification des variables d'environnement met à jour les clés de registre, mais ces clés ne sont pas relues jusqu'à ce que le système doive créer un nouvel environnement de connexion pour un processus en cours de lancement. La plupart du temps, cela ne se produit pas parce que les processus sont les enfants d'un processus qui a déjà un environnement, donc l'environnement est hérité.
la source
WM_SETTINGCHANGE
message.De: http://support.microsoft.com/kb/104011 via /server//q/8855/158027
la source
Le problème vient de vos paramètres utilisateur. Dans la fenêtre 8, chaque utilisateur a ses propres variables d'environnement.
L'approche ci-dessus modifiera les variables d'environnement pour l'utilisateur root, peut-être pas votre utilisateur actuel.
Vous devez aller dans le compte utilisateur -> sélectionner votre compte actuel -> changer les variables d'environnement
Après avoir changé, redémarrez Power Shell. ensuite
ou
J'espère que ceci vous aidera.
la source
Essayez SETX à la place de SET. Par exemple
SETX PATH "%PATH%;MyPath"
la source
SETX
plutôt que deSET
travailler.Si vous utilisez Windows 8.1, ouvrez l'invite de commande en tant qu'administrateur, puis appelez la commande PATH et vous devriez la voir y apparaître. Lorsque vous revenez à cmd normal, il apparaîtra également. Et en fait, vous devriez pouvoir démarrer l'application ajoutée à partir de l'invite de commande.
la source
Tard dans la sienne. Toutefois. Vous pouvez être victime de ce problème: les variables utilisateur ne sont pas résolues correctement dans Windows .
la source
Cela fonctionne-t-il si vous utilisez Win + R à partir du bureau pour démarrer cmd.exe? Je suppose que le démarrage à partir de l'écran de démarrage entraîne une différence entre le parent de cmd.exe démarré et explorer.exe (WSAHost.exe, IIRC ou autre), et ce processus parent ne met pas à jour son environnement pendant les messages WM_SETTINGCHANGE. Je n'ai pas de machine Windows 8 sous la main pour tester ...
la source