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écution cmd
n'a pas obtenu l'environnement mis à jour.