Warum ist setx path nicht funktioniert?
Kann jemand erklären Sie dieses Ergebnis?
Nach der Einstellung Weg, es hat sich nicht geändert. Dieser Lauf war in einer Administrator-Kommandozeile:
C:\Windows\system32>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin"
SUCCESS: Specified value was saved.
C:\Windows\system32>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;D:\Program Files (x86)\metapad36;D:\Program Files (x86)\metapad36" /M
Ich habe gelesen, dass die %PATH% = PATH-variable für die Maschine + die variable PATH für den Benutzer. Sehe ich die Maschine Weg + Admin-Pfad?
Habe mir bei anderen Artikeln zu dem Thema, aber immer noch verwirrt.
Sollte ich deaktivieren Sie die Benutzer Pfade, so gibt es keine überschneidungen?
update: Neu der Tipp, dass "Variablen erstellt oder geändert, die von diesem tool wird in Zukunft den Befehl windows -" öffne ich ein nicht-admin - Fenster und geben Sie ein:
>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin
Der Pfad wird zweimal wiederholt. Ok, dann an der gleichen Eingabeaufforderung ich setx
den Pfad ohne das zu wiederholen, und ohne /M
:
>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin"
SUCCESS: Specified value was saved.
Offenbar gerettet in der aktuellen Umgebung des Benutzers.
Dann öffne ich ein neue nicht-admin Befehlsfenster, und:
>path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin`
Es hat sich nicht geändert. Warum?
- Wenn man die "Vervielfältigung" stammt aus der system-Variablen, müssen Sie
setx /M
die korrigiertepath
zu (bei einer erhöhten cmd-Eingabeaufforderung, natürlich). Ändern der Benutzer-Wert vonpath
nicht geht, Einträge zu entfernen, die im system definiert sind Wertpath
. - Es klingt wie du sagst, dass
path
eingetragen auf nicht Admin Kommandozeilen-zurück-system-weit Weg, nicht in user-level-Pfad. Wirklich? Ich merke Eingabepath
eingetragen auf nicht Admin command-line gibt unterschiedliche Ergebnisse alspath
eingegeben werden, auf eine Admin - Befehl-Linie. Aber wenn in beiden Fällen die Rückgabe von system-Pfad, warum sind Sie unterschiedlich? thx - Nein, Sie missverstanden. Sie brauchen nur die erhöhten Eingabeaufforderung, um für
setx /M
zu dürfen, ändern Sie die system-Umgebungsvariablepath
. Andere als die, die erhöht ist (run-as-admin) und normalen (nicht erhöhten) cmd aufgefordert, die gleiche Umgebung. Beachten Sie, dassPATH
insbesondere ist eine Kombination von system-PFAD + user WEG, siehe zum Beispiel Umgebungsvariablen in Windows NT:The User path is appended to the system path.
Wenn Sie irgendwie beide auf den gleichen Wert, wird der resultierende PFAD enthält Duplikate, wie Sie sind, zu sehen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Windows, jeder Prozess bekommt eine Kopie von der Umgebung, die im wesentlichen eine Momentaufnahme der globalen Umwelt auf die Zeit, die der Prozess gestartet wurde. Veränderungen der globalen Umwelt während der Prozess ausgeführt wird, nicht zurückgegeben, um den Prozess eigene Kopie der Umgebung.
Die eigentliche Frage zu beantworten,
setx
ändern der Benutzer-Umgebung (oder das system, wenn die Ausführung mit/M
), aber die änderungen sind nicht sofort sichtbar in den Prozess, der ausgeführtsetx
, in diesem Fallcmd.exe
. Wenn Sie öffnen eine neue Eingabeaufforderung nach der Ausführungsetx
, sehen Sie die änderungen in , dass Instanzcmd.exe
.Dies ist ausdrücklich vermerkt im
setx /?
Hilfe:Effekt der änderungen, die in beide der globalen Umwelt, und die von den aktuellen Prozess, die Sie ausführen müssen, um beide
setx
undset
.