Zmienne środowiskowe w PATH Nie rozwinięte dla wiersza polecenia innego niż administrator?

11

Mam komputer z systemem Windows 7, który po uruchomieniu wiersza polecenia przez zwykłego użytkownika nie rozwija zmiennych środowiskowych w pliku %PATH%. Jeśli zamiast tego wiersz polecenia jest uruchamiany jako administrator (kliknij prawym przyciskiem myszy, Uruchom jako administrator ), wówczas %PATH%zostanie odpowiednio rozwinięty.

W szczególności %PATH%dla cmd.exeuruchomienia jako użytkownik (wyświetlane przez set path) jest następujący:

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

... natomiast %PATH%do cmd.exeUruchom jako administrator jest w następujący sposób:

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

Próbowałem zalogować się jako nowy użytkownik, aby utworzyć nowy profil, ale problem nadal występuje w tym profilu. HKEY_CURRENT_USER\Environment\PATHnie istnieje i HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Pathodpowiada zdefiniowanej ścieżce systemowej we Właściwościach komputera -> Zmienne środowiskowe.

Czy ktoś ma jakieś pojęcie o tym, co to może być lub gdzie mogę szukać?

Steve Vigneau
źródło

Odpowiedzi:

8

Dwie rzeczy, które mógłbym spróbować.

  1. Uruchom i sfc /scannowsprawdź, czy to rozwiąże jakieś większe problemy w grze.
  2. Sprawdź rejestr Pathklucza HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Jaki jest typ . To powinno powiedziećREG_EXPAND_SZ
Nixphoe
źródło
To było to. Jeśli wezmę normalną maszynę i ustawię ją, REG_SZproblem wystąpi, jeśli ustawię ją z powrotem REG_EXPAND_SZ, zostanie naprawiony.
Steve Vigneau,
@ Steve - Sweet! Nauczyłem się nawet czegoś na ten temat :)
Nixphoe
1
Ale się zastanawiam. Dlaczego tworzy te zmienne env z błędnym typem wartości w rejestrze? Nie pamiętam tego problemu wcześniej, używam Windows 8.1 Update 1 i wydaje się, że ten problem mógł wystąpić nawet w XP! support.microsoft.com/kb/329308
Adrián Pérez
0

Podczas próby skonfigurowania Maven napotkałem ten sam problem ...

Znalazłem ten post w Superuser, który rzucił nieco światła na ten problem, ale nie zadziałał dla mnie. Wydawało się, że chodzi o podniesienie uprawnień, ponieważ powłoka administracyjna działałaby, ale powłoka użytkownika nie. W końcu postanowiłem po prostu odtworzyć zmienne użytkownika jako zmienne systemowe i dodać je do ścieżki globalnej.

To zadziałało dla kilku zmiennych, ale miałem jedną parę, która wciąż się nie rozwija. Kilka razy odtworzyłem je z nowymi nazwami, ale bezskutecznie. Jednak zmienne w końcu ostatecznie rozszerzyły się poprawnie w powłoce użytkownika po wyłączeniu UAC, ponownym uruchomieniu, ponownym włączeniu UAC i ponownym uruchomieniu.

Joe Internet
źródło
0

Miałem bardzo podobny problem - prostym rozwiązaniem było dodanie średnika po aliasie w definicji ścieżki .

Długa historia:

Używam, node.jswięc zdefiniuj alias NODE_HOME za pomocą zmiennej środowiskowej użytkownika. Następnie dołączam ten alias do mojej zmiennej środowiskowej PATH .

Zauważyłem, że po ponownym uruchomieniu powłoka straciła ścieżkę do NODE_HOME, więc npmitd. Nie będzie działać. Co się dzieje?

Podczas inspekcji widzę, że NODE_HOME jest ustawiony, ale że magicznie nabył średnik.

C:\Users\ob>echo %NODE_HOME%
C:\Users\ob\node-8.11.1;

ŚCIEŻKA kończy się teraz dosłownym łańcuchem % NODE_HOME% zamiast rozszerzonej ścieżki do folderu węzła:

C:\Users\ob>echo %PATH%
C:\Program...rams\Git\cmd;%NODE_HOME%

Naprawić to:

Najpierw usuń błędne średniki z końca definicji NODE_HOME .

Po drugie, dodaj średnik po symbolu NODE_HOME w definicji ŚCIEŻKI :

C:\Program...rams\Git\cmd;%NODE_HOME%;

Teraz, kiedy rozpocząć i rozwinąć nową powłokę PATH , stwierdzi NODE_HOME :

C:\Users\ob>echo %PATH%
C:\Program...ams\Git\cmd;C:\Users\tkobo\Installations\node-8.11.1;

I npmznów działa!

Oscar Bravo
źródło
-1

PROBLEM : Mój problem był tylko podobny, ponieważ dobrze cię rozumiem. Moja „Ścieżka” zawierała ...;% ANT_HOME% \ bin; ... Miałem zmienną ANT_HOME poprawnie ustawioną w Zmiennych systemowych (nie użytkownika), a CMD -> SET tak samo jak „echo% ANT_HOME%” wydrukował ją poprawnie .

ROZWIĄZANIE : Rozwiązałem problem, przenosząc folder z c: \ dev \ 3rd \ ant ... do c: ** Programm Files (x86) ** \ dev \ 3rd \ ant ...

Lala.box
źródło