Je devais 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:
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é.
EDIT
Variables d'environnement Windows 8 et vidéo d'invite de commande
EDIT
Ce n'est certainement pas le comportement de Windows 7. Regardez cette vidéo pour voir le comportement Je m'attends à fonctionner sous Windows 7. http://youtu.be/95JXY5X0fII
EDIT 5/31/2013
Donc, après beaucoup de frustration, j'ai écrit une petite application C # pour tester l'événement WM_SETTINGCHANGE
. Ce code reçoit l'événement sous Windows 7 et Windows 8. Toutefois, sous Windows 8 sur mon système, le chemin d'accès n'est pas 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
équivaut àWM_SETTINGCHANGE
programme C # sous Windows 7 (vous pouvez voir l’événement arriver et il prend le bon chemin).
programme C # sous Windows 8 (vous pouvez voir l’événement arriver, mais le mauvais chemin).
Il y a quelque chose dans mon environnement qui précipite ce problème. Cependant, s'agit-il d'un bogue 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 solution à ce problème pour nous. Les réponses ci-dessous n'ont pas résolu notre problème.
Si vous lancez l'invite de commande à partir du menu Démarrer ou d'un raccourci dans votre barre des tâches, vous devez soit:
Explorer
name__. Tuez-le et relancez-le.Explorer
name__).Explorer
name__).L'environnement ne se met pas à jour immédiatement, car les environnements sont hérités de leur processus parent, à l'exception de Explorer
name__, qui est démarré par le système lors de la connexion. Voici comment cela 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 tant que le système n'a pas besoin de créer un nouvel environnement de connexion pour le lancement d'un processus. La plupart du temps, cela ne se produit pas car les processus sont les enfants d'un processus qui a déjà un environnement, donc l'environnement est hérité.
De: http://support.Microsoft.com/kb/104011 via https://serverfault.com/q/8855/158027
...
Toutefois, notez que les modifications des variables d'environnement n'entraînent pas de changement immédiat. Par exemple, si vous démarrez une autre invite après avoir apporté les modifications, les variables d'environnement refléteront les valeurs précédentes (et non les valeurs actuelles). Les modifications ne prennent effet que lorsque vous vous déconnectez, puis vous reconnectez.
Pour effectuer ces modifications sans avoir à vous déconnecter, diffusez un message WM_SETTINGCHANGE sur toutes les fenêtres du système afin que toutes les applications intéressées (telles que l'Explorateur Windows, le Gestionnaire de programmes, le Gestionnaire de tâches, le Panneau de configuration, etc.) puissent effectuer une mise à jour. PLUS D'INFORMATION
Par exemple, sur les systèmes Windows NT, le fragment de code suivant doit propager les modifications apportées aux variables d'environnement utilisées dans l'invite de commandes:
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "Environment", SMTO_ABORTIFHUNG, 5000, &dwReturnValue);
Aucune des applications fournies avec Windows 95 et Windows 98, y compris l'Explorateur Windows et le Gestionnaire de programmes, ne répond à ce message. Ainsi, bien que cet article puisse techniquement être implémenté sous Windows 95 et Windows 98, il n’existe aucun effet, sauf celui de notifier les applications tierces. La seule méthode permettant de modifier les variables d'environnement globales sous Windows 95 consiste à modifier le fichier autoexec.bat et à redémarrer.
Le problème vient de vos paramètres utilisateur. Dans la fenêtre 8, chaque utilisateur a ses propres variables d’environnement.
Ouvrez les propriétés du système (Démarrer-> [type "Panneau de configuration"] -> Panneau de configuration\Système et sécurité\Système -> Paramètres système avancés -> Variables d'environnement).
L'approche ci-dessus modifiera les variables d'environnement pour l'utilisateur root, peut-être pas pour l'utilisateur actuel.
Vous devriez aller sur user-account -> sélectionnez votre compte actuel -> changez les variables d'environnement
Après avoir changé, redémarrez Power Shell. ensuite
echo $env:Java_HOME
ou
Get-ChildItem env
J'espère que ceci vous aidera.
En retard au sien. Toutefois. Vous pouvez être victime de ce problème: Les variables utilisateur ne sont pas résolues correctement sous Windows .
Essayez SETX à la place de SET. E.g SETX PATH "%PATH%;MyPath"
Si vous utilisez Windows 8.1, ouvrez la commande Invite en tant qu'administrateur, puis appelez la commande PATH et vous devriez la voir apparaître ici. Lorsque vous revenez à cmd normal, il apparaîtra également Et en fait, vous devriez pouvoir démarrer l’application ajoutée à partir de la commande Invite.