Ich musste meiner PATH-Variablen einen neuen Eintrag hinzufügen. Dies ist eine häufige Aktivität für mich in meinem Job, aber ich habe kürzlich angefangen, Windows 8 zu verwenden. Ich bin davon ausgegangen, dass der Prozess Windows 7, Vista, XP ähnelt ...
Hier ist meine Abfolge von Ereignissen:
- Öffnen Sie die Systemeigenschaften (Start-> [Typ "Systemsteuerung"] -> Systemsteuerung \ System und Sicherheit \ System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen).
- Füge den neuen Pfad zum Anfang meiner USER PATH-Variablen hinzu (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Öffnete eine Eingabeaufforderung (Start -> [Typ "Eingabeaufforderung" eingeben] -> [Typ "Pfad" eingeben]
Mein neuer Pfadeintrag ist nicht verfügbar (siehe angehängte Bilder und Videos). Ich habe genau den gleichen Prozess auf einem Windows 7-Computer dupliziert und es hat funktioniert.
BEARBEITEN
Windows 8-Umgebungsvariablen und Eingabeaufforderungsvideo
BEARBEITEN
Dies ist definitiv nicht das Verhalten von Windows 7. In diesem Video wird das erwartete Verhalten unter Windows 7 gezeigt. Http://youtu.be/95JXY5X0fII
EDIT 31.05.2013
Also habe ich nach viel Frust eine kleine C # -App geschrieben, um das WM_SETTINGCHANGE
Event zu testen . Dieser Code empfängt das Ereignis sowohl in Windows 7 als auch in Windows 8. In Windows 8 auf meinem System erhalte ich jedoch nicht den richtigen Pfad. aber ich mache in Windows 7. Dies konnte nicht in anderen Windows 8-Systemen reproduziert werden.
Hier ist der C # -Code.
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
ist äquivalent zu WM_SETTINGCHANGE
C # -Programm, das unter Windows 7 ausgeführt wird (Sie können sehen, dass das Ereignis eintrifft und den richtigen Pfad ermittelt).
C # -Programm, das unter Windows 8 ausgeführt wird (Sie können sehen, dass das Ereignis durchgelaufen ist, aber der falsche Pfad).
Es gibt etwas an meiner Umgebung, das dieses Problem auslöst. Ist dies jedoch ein Windows 8-Fehler?
EDIT 2014-04-28
Aufgrund dieses und mehrerer anderer Probleme wird Windows 8 auf dem Desktop nicht mehr verwendet. Wir haben keine Umgebung, um mit diesem Problem weiter zu testen und zu experimentieren. Es gibt noch keine Antwort oder Lösung für dieses Problem für uns. Die folgenden Antworten haben unser Problem nicht gelöst.
cmd
als eine neue Instanz gestartet wurde. Natürlich hat der bereits laufendecmd
die aktualisierte Umgebung nicht bekommen.Antworten:
Wenn Sie die Eingabeaufforderung über das Startmenü oder eine Verknüpfung in Ihrer Taskleiste starten, müssen Sie entweder:
explorer
. Töte es und starte es neu.explorer
).explorer
).Die Umgebung wird nicht sofort aktualisiert, da Umgebungen von ihrem übergeordneten Prozess geerbt werden, mit Ausnahme von
explorer
, der beim Anmelden vom System gestartet wird. So verhält es sich auf meinem Windows 7-System.Wenn Sie also die Umgebungsvariablen ändern, werden die Registrierungsschlüssel aktualisiert. Diese Schlüssel werden jedoch erst dann erneut gelesen, wenn das System für einen Prozess, der gestartet wird, eine neue Anmeldeumgebung erstellen muss. Meistens geschieht dies nicht, da Prozesse untergeordnete Elemente eines Prozesses sind, der bereits über eine Umgebung verfügt, sodass die Umgebung vererbt wird.
quelle
WM_SETTINGCHANGE
Nachrichten verarbeiten.Von: http://support.microsoft.com/kb/104011 über /server//q/8855/158027
quelle
Das Problem liegt in Ihrer Benutzereinstellung. In Windows 8 verfügt jeder Benutzer über eigene Umgebungsvariablen.
Bei der obigen Vorgehensweise werden Umgebungsvariablen für den Root-Benutzer bearbeitet, möglicherweise nicht für Ihren aktuellen Benutzer.
Sie sollten zum Benutzerkonto gehen -> Ihr aktuelles Konto auswählen -> Umgebungsvariablen ändern
Starten Sie die Power Shell nach dem Wechsel neu. Dann
oder
Hoffe das wird dir helfen.
quelle
Versuchen Sie SETX statt SET. Z.B
SETX PATH "%PATH%;MyPath"
quelle
SETX
nichtSET
funktioniert?Wenn Sie Windows 8.1 verwenden, öffnen Sie die Eingabeaufforderung als Administrator, und rufen Sie den Befehl PATH auf. Dieser sollte dort angezeigt werden. Wenn Sie zu normalem cmd zurückkehren, wird es auch angezeigt. Tatsächlich sollten Sie in der Lage sein, die hinzugefügte Anwendung über die Eingabeaufforderung zu starten.
quelle
Spät zu seinem. Jedoch. Möglicherweise sind Sie ein Opfer dieses Problems: Benutzervariablen werden in Windows nicht korrekt aufgelöst .
quelle
Funktioniert es, wenn Sie mit Win + R vom Desktop aus cmd.exe starten? Ich vermute, dass das Starten über den Startbildschirm dazu führt, dass sich das übergeordnete Element der gestarteten Datei cmd.exe von explorer.exe (WSAHost.exe, IIRC oder wie auch immer es heißt) unterscheidet und dass der übergeordnete Prozess seine Umgebung während WM_SETTINGCHANGE-Nachrichten nicht aktualisiert. Ich habe keine Windows 8-Maschine zum Testen zur Hand ...
quelle