Musiałem dodać nowy wpis do mojej zmiennej PATH. Jest to dla mnie częste działanie, ale ostatnio zacząłem używać systemu Windows 8. Zakładałem, że proces będzie podobny do Windows 7, Vista, XP ...
Oto moja sekwencja wydarzeń:
- Otwórz właściwości systemu (Start-> [wpisz „Panel sterowania”] -> Panel sterowania \ System i zabezpieczenia \ System -> Zaawansowane ustawienia systemu -> Zmienne środowiskowe)
- Dodaj nową ścieżkę do początku mojej zmiennej USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Otwarto wiersz polecenia (Start -> [wpisz „wiersz polecenia” enter] -> [wpisz „path” enter]
Mój nowy wpis ścieżki nie jest dostępny (patrz załączony obraz i wideo). Powieliłem dokładnie ten sam proces na komputerze z systemem Windows 7 i zadziałało.
EDYTOWAĆ
Zmienne środowiskowe Windows 8 i wideo z wierszem polecenia
EDYTOWAĆ
To zdecydowanie nie jest zachowanie systemu Windows 7. Obejrzyj ten film, aby zobaczyć zachowanie, którego oczekuję od pracy w systemie Windows 7. http://youtu.be/95JXY5X0fII
EDYTUJ 31.05.2013
Po wielu frustracjach napisałem małą aplikację w języku C #, aby przetestować to WM_SETTINGCHANGE
wydarzenie. Ten kod odbiera zdarzenie zarówno w systemie Windows 7, jak i Windows 8. Jednak w systemie Windows 8 w moim systemie nie otrzymuję prawidłowej ścieżki; ale robię to w systemie Windows 7. Nie można tego odtworzyć w innych systemach Windows 8.
Oto kod 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
jest równa WM_SETTINGCHANGE
Program C # działający w systemie Windows 7 (możesz zobaczyć, jak zdarzenie się pojawia i wybiera właściwą ścieżkę).
Program C # działający w systemie Windows 8 (można zobaczyć, że wydarzenie się pojawiło, ale zła ścieżka).
W moim środowisku jest coś, co przyspiesza ten problem. Czy jest to jednak błąd systemu Windows 8?
EDYCJA 28.04.2014
Z powodu tego i kilku innych problemów nie używamy już systemu Windows 8 na pulpicie. Nie mamy środowiska, aby kontynuować testowanie i eksperymentowanie z tym problemem. Nadal nie ma dla nas odpowiedzi ani rozwiązania tego problemu. Poniższe odpowiedzi nie rozwiązały naszego problemu.
cmd
podczas uruchamiania nowej instancji. Oczywiście działającecmd
już nie otrzymało zaktualizowanego środowiska.Odpowiedzi:
Jeśli uruchamiasz wiersz polecenia z menu Start lub skrótu na pasku zadań, musisz:
explorer
. Zabij go i uruchom ponownie.explorer
).explorer
).Środowisko nie aktualizuje się natychmiast, ponieważ środowiska są dziedziczone po procesie nadrzędnym, z wyjątkiem tego
explorer
, który jest uruchamiany przez system po zalogowaniu. Tak to działa w moim systemie Windows 7.Tak więc zmiana zmiennych środowiska aktualizuje klucze rejestru, ale klucze te nie są ponownie odczytywane, dopóki system nie zbuduje nowego środowiska logowania dla niektórych uruchomionych procesów. W większości przypadków tak się nie dzieje, ponieważ procesy są potomkami procesu, który ma już środowisko, więc środowisko jest dziedziczone.
źródło
WM_SETTINGCHANGE
komunikat.Od: http://support.microsoft.com/kb/104011 przez /server//q/8855/158027
źródło
Problem dotyczy ustawień użytkownika. W Windows 8 każdy użytkownik ma swoje własne zmienne środowiskowe.
Powyższe podejście spowoduje edycję zmiennych środowiskowych dla użytkownika root, a może nie bieżącego użytkownika.
Powinieneś przejść do konta użytkownika -> wybrać swoje bieżące konto -> zmienić zmienne środowiskowe
Po zmianie zrestartuj powłokę zasilania. Następnie
lub
Mam nadzieję, że to ci pomoże.
źródło
Spróbuj SETX zamiast SET. Na przykład
SETX PATH "%PATH%;MyPath"
źródło
SETX
zamiastSET
działa.Jeśli korzystasz z systemu Windows 8.1, otwórz wiersz polecenia jako Administrator, a następnie wywołaj polecenie ŚCIEŻKA, a powinno się tam pojawić. Gdy wrócisz do normalnego cmd, również się pojawi. I w rzeczywistości powinieneś być w stanie uruchomić dodaną aplikację z wiersza poleceń.
źródło
Spóźniony do swojego. Jednak. Możesz być ofiarą tego problemu: zmienne użytkownika nie są poprawnie rozwiązywane w systemie Windows .
źródło
Czy to działa, jeśli używasz Win + R z pulpitu, aby uruchomić cmd.exe? Domyślam się, że uruchomienie go z ekranu startowego powoduje, że rodzic uruchomionego cmd.exe różni się od explorer.exe (WSAHost.exe, IIRC lub jakkolwiek się nazywa), a ten proces nadrzędny nie aktualizuje swojego środowiska podczas komunikatów WM_SETTINGCHANGE. Nie mam pod ręką komputera z systemem Windows 8, aby przetestować ...
źródło