Trochę ważnego tła: moja firma ma ogólny skrypt logowania VBS, który modyfikuje zmienną środowiskową PATH użytkownika po zalogowaniu i pozwala mi uruchamiać oprogramowanie, które ma zależności na mapowanych bazach danych DFS. Niedawno zainstalowałem Windows PowerShell SDK na moim komputerze z systemem Windows 7 Enterprise i próbowałem spróbować zmodyfikować moją zmienną środowiskową PATH z linii poleceń PowerShell.
Następnie zauważyłem, że nie mogę już uruchamiać aplikacji odpowiadających tym modyfikacjom PATH logowania i że edytor zmiennych środowiskowych PATH został ustawiony na coś innego niż to, co było wyświetlane, gdy wydałem 'echo %PATH%'
z wiersza polecenia.
Na przykład (uproszczenie) z edytora zmiennych środowiskowych ( My Computer properties -> Advanced System Settings -> Environment Variables
) Miałem
C:\MyDir\; C:\MyOtherDir
mając na uwadze, że kiedy to zrobiłem 'echo %PATH%'
z wiersza polecenia otrzymałem:
C:\MyDir\
Czy ktoś inny miał podobny problem i czy istniało jakieś rozwiązanie? Kiedy szukałem pomocy, natknąłem się na to:
(Powiązane?) Wątek StackOverflow
Przyszło mi do głowy, że jeśli skrypt logowania został zainicjowany przez coś innego niż moje środowisko Explorer.exe, to był problem. Jednak gdy sam uruchomiłem skrypt logowania, moja PATH z wiersza poleceń pozostała niezmieniona. Co to ma wspólnego z PowerShell? Tęsknię za tym, że jest to całkowicie połączone z tą instalacją.
źródło
Odpowiedzi:
Windows ma dwie klasy zmiennych środowiskowych systemowe zmienne środowiskowe i zmienne środowiskowe użytkownika . Jeśli używasz
echo %PATH%
zobaczysz swoje zmienna środowiskowa użytkownikaPATH
. Tylko jeśli nie zdefiniowano żadnej zmiennej użytkownika, zmienna systemowa będzie obowiązywać dla procesów użytkownika.The
PATH
separator;
nie powinno być puste.Następujące Notatka Microsoft może być pomocne:
Możesz modyfikować zmienne środowiskowe użytkownika, edytując następujący klucz Rejestru:
Możesz modyfikować zmienne środowiskowe systemu, edytując następujący klucz Rejestru:
Zauważ, że każda zmienna środowiskowa, która musi zostać rozwinięta (na przykład podczas używania
%SYSTEM%
) muszą być przechowywane w rejestrze jakoREG_EXPAND_SZ
wartość rejestru. Wszelkie wartości typuREG_SZ
nie zostanie rozwinięty podczas odczytu z rejestru.Dodatkowa uwaga: Za każdym razem, gdy proces zmienia swoje środowisko (zamiast ustawień rejestru, które definiują środowisko dla nowych procesów), zmiany są widoczne tylko dla procesów potomnych.
źródło
tmp
itemp
. Czy jesteś pewien, że jest to ścieżka dla użytkownika, którą należy zmodyfikować?