Was ist der Unterschied zwischen SETX und SET in Umgebungsvariablen in Windows

Was ist der Unterschied zwischen SETX und SET in Umgebungsvariablen in Windows

Was ist der Unterschied zwischen SETXund SET?

Meines Wissens nach gilt:
Beide werden zum Festlegen von Umgebungsvariablen verwendet,
SETXund zwar für Benutzervariablen.
SETBeide sind für Shellvariablen.

Antwort1

Ich fürchte, ganz so einfach ist es nicht. Umgebungsvariablen sind nicht durch ihren Gültigkeitsbereich begrenzt, wie Sie vorschlagen, aber Sie haben Recht, dass die Lebensdauer des Werts in der Variablen beim Vergleich der Verben unterschiedlich ist.

setändert die Umgebungswerte der aktuellen Shell (des Fensters) und die Änderung ist sofort verfügbar, aber nur vorübergehend. Die Änderung wirkt sich nicht auf andere laufende Shells aus und sobald Sie die Shell schließen, geht der neue Wert verloren, bis Sie set erneut ausführen.

setxändert den Wert dauerhaft, was sich auf alle zukünftigen Shells auswirkt, aber die Umgebung der bereits laufenden Shells nicht ändert. Sie müssen die Shell beenden und erneut öffnen, bevor die Änderung verfügbar ist, aber der Wert bleibt geändert, bis Sie ihn erneut ändern.

Ein Beispiel finden Sie hier:http://batcheero.blogspot.com/2008/02/set-and-setx.html

Antwort2

Tatsächlich können wir Variablen in drei Bereichen festlegen:
1. Shell
2. Benutzer
3. System (Maschine) oder Global

SET: Erstellen oder aktualisieren Sie den aktuellen Shell-Bereich vorübergehend.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX: Erstellen oder aktualisieren Sie die aktuellen Benutzerumgebungsvariablen dauerhaft.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

In GUI-Benutzer- und Systemumgebungsvariablen.

Bildbeschreibung hier eingeben

Antwort3

Hinzufügen eines Punktes, der von anderen Antwortenden übersehen wurde.

Um eine Systemumgebungsvariable anstelle einer Benutzerumgebungsvariablen festzulegen, müssen wir nur die Option /m im setx-Befehl verwenden und ihn von einer Eingabeaufforderung mit erhöhten Rechten (Administrator) aus ausführen.

setx variable value /m

Beispiel: Öffnen Sie die Eingabeaufforderung als Administrator und führen Sie aus

setx Path "%Path%;C:\Users\User\Libs" /m

Erklärung: Der obige Befehl hängt „C:\Users\User\Libs“ an die bereits vorhandene Pfadvariable (Systemumgebungsvariable) an.

Ohne das/MArgument, es werden nur Änderungen an der Pfadvariable auf Benutzerebene vorgenommen oder eine solche erstellt.

Aus dem setx-Benutzerhandbuch:

/M Gibt an, dass die Variable in der systemweiten Umgebung (HKEY_LOCAL_MACHINE) festgelegt werden soll. Standardmäßig wird die Variable in der Umgebung HKEY_CURRENT_USER festgelegt.

Antwort4

setx.exeist ein Programm, das Benutzer-/Systemumgebungsvariablen in derRegistrierung, das für die zukünftige Prozesserstellung verwendet wird. setist ein Befehl, der dieVerfahrenUmgebungsvariablen in der Umgebung im Parameterblock im PEB des aktuellen Prozesses (die die Benutzer- und Systemvariablen sowie die vom aktuellen oder übergeordneten Prozess mithilfe von definierten Variablen anzeigen set) und die Definition weiterer Variablen durch den aktuellen Prozess ermöglichen. Die Änderungen an der Umgebung können vom Prozess-Explorer aus angezeigt werden.

cmd /c set variable=valuelegt Variablen für den cmd.exevon ihm erstellten untergeordneten Prozess fest (der sich an das übergeordnete cmd.exeKonsolenfenster anfügt, kein eigenes zuweist und die Umgebung des übergeordneten Prozesses erbt), sodass es nicht wirksam wird, wenn Sie es setdanach innerhalb desselben Fensters ausführen, da es auf den übergeordneten Prozess verweist cmd.exe. Prozesse der obersten Ebene erben ihre Umgebung direkt aus der Registrierung und explorer.exeaktualisieren ihre Umgebungsvariablen dynamisch (im Gegensatz zu den meisten anderen Apps), sodass beim Ausführen setxnicht einmal die aktuelle Prozessumgebung aktualisiert wird, sondern nur die Registrierung, die entweder von gelesen wird explorer.exe, oder der explorer.exeProzess wird von der Windows-API-Funktion aktualisiert, die die Umgebungsvariable festlegt (weniger wahrscheinlich), sodass zukünftige geöffnete cmd.exes explorer.exedie Umgebung von erben, da es sich um untergeordnete Prozesse handelt.

verwandte Informationen