Wie werden die Windows-Umgebungsvariablen ausgewertet?
Wenn ich ein system und Benutzer Umgebungsvariablen mit dem gleichen Namen, wie werden Sie verarbeitet? Sind Sie verkettet? Sieht der Benutzer die variable überschreiben der system-Variablen? Und wenn man das berücksichtigt, wenn ich etwas hinzufügen, um die Path
variable, wo ist es bequemer, um es hinzuzufügen?
InformationsquelleAutor mjsr | 2011-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dieser Artikel sollte auch die Antwort auf deine Frage: Umwelt-Variablen in Windows NT
Ich glaube nicht, was Sie sagen, ist richtig. Der Artikel besagt, dass der Benutzer die PFAD-Einträge angehängt werden, um system-weit WEG. Für Ihr Szenario einer leeren Benutzer-PFAD hätte das keine Auswirkungen auf den WEG zu einem Prozess. Mit anderen Worten, das hinzufügen einer leeren Zeichenfolge an das Ende der system-PFAD wird keine Wirkung haben. Ich habe getestet auf Windows 8.
InformationsquelleAutor splash
Alles splash sagt in Ihre Antwort korrekt ist. Absolut klar, es gibt einen Unterschied zwischen dem, wie der Benutzer die Umgebungsvariable path ausgewertet wird, und die andere Benutzer-Umgebungsvariablen ausgewertet werden. Ein regelmäßiger Benutzer-Umgebungsvariable überschreibt komplett-system mit dem gleichen Namen, wenn beide vorhanden sind, aber nur für bestimmte user es angegeben ist. Der Benutzer jedoch die path-Variablen anders behandelt. Es ist angehängt, um die system path variable bei der Auswertung, sondern vollständig zu ersetzen. Ich glaube splash-Staaten, aber Sie tun es so prägnant denke ich muss es buchstabieren.
InformationsquelleAutor Simon
Alles, was splash und Simon sagen in Ihren Antworten richtig sind. Die Idee, dass der Benutzer die path-variable angehängt wurde hervorgehoben, und ich glaube, die Konsequenzen, die Differenz erfordern eine zusätzliche Behandlung.
Beim ausführen einer ausführbaren Programm (oder ein ausführbares Skript, wie
.bat
,.vbs
usw.) Sie müssen nicht den vollständig qualifizierten Pfad.Beispielsweise, zu laufen
java
, können Sie alle diese:Das erste Beispiel verwendet einen voll qualifizierten Pfad. Dies wird immer dann verwenden Sie die version von Java an, dass der genaue Pfad.
Zweiten Beispiel wird durch jedes der Verzeichnisse in der
%Path%
environment-variable, auf der Suche nach einer ausführbaren Datei namensjava.exe
. Es wird ausgeführt, der erste, der gefunden wird, und aufhören zu suchen. , Wenn es zwei Dateien mit dem Namenjava.exe
irgendwo auf der%Path%
nur die erste Gefundene wird verwendet.Des Dritten Beispiels, wie in der zweiten, wird die Iteration über die Verzeichnisse, die in der
%Path%
. Darüber hinaus, weil Sie eine Datei-Erweiterung war nicht vorgesehen, eine Liste der ausführbaren Datei-Erweiterungen werden Hinzugefügt, um den Namen der Datei, in der Reihenfolge angegeben, in der%PATHEXT%
Umgebungsvariable. Wenn es mehrere Dateien mit dem Namenjava.com
,java.exe
,java.bat
usw. irgendwo auf der%Path%
nur die erste Gefundene wird verwendet.Sehen Sie die Liste der ausführbaren Pfad-Erweiterungen auf Ihrem system, indem Sie folgenden batch-Datei:
Auf meinem Rechner, diese sind:
Was bedeutet das alles?
In krassen Gegensatz zu anderen Umgebungsvariablen, die Benutzer-Pfad können Sie nicht überschreiben das system Weg. Das genaue Gegenteil ist der Fall. Aus den oben genannten Beispielen gibt es viele Fälle, wo Sie kann mit änderung der Standard-Java-version. Allerdings, wenn es bereits eine Java-version aufgeführt, die im system Weg, das ist die version, die wird IMMER gefunden werden, zum einen, weil der Pfad durchsucht, in der Reihenfolge von Links nach rechts, und die Benutzer-Pfad angehängt, auf der rechten Seite, mit der system-Pfad auf der linken Seite.
Was kann ich dagegen tun?
Wenn Sie nicht haben Zugriff auf die system-Umwelt-Variablen, die Sie nicht überschreiben die Standard-Programme auf dem system Pfad, mit dem der Anwender Pfad. (In der Tat, es muss so sein, oder bestimmte Programme würden nicht mehr richtig, und es wird Ihr system vor Manipulation durch Schadsoftware. Niemand will, dass.)
Statt, Sie müssen einen vollqualifizierten Pfad verwenden, wenn Sie müssen eine bestimmte version.
InformationsquelleAutor JonathanDavidArndt