it-swarm.com.de

Wie bekomme und setze ich Umgebungsvariablen in C #?

Wie kann ich Umgebungsvariablen abrufen und den Wert festlegen, wenn etwas fehlt?

174
Mister Dev

Verwenden Sie die Klasse System.Environment .

Die Methoden

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

und

System.Environment.SetEnvironmentVariable(variable, value [, Target])

erledigt die Arbeit für Sie.

Der optionale Parameter Target ist eine Aufzählung vom Typ EnvironmentVariableTarget und kann eine der folgenden sein: Machine, Process oder User. Wenn Sie es weglassen, ist das Standardziel der aktuelle Prozess.

241

Ich bin darauf gestoßen, als ich an einer .NET-Konsolen-App gearbeitet habe, um die Umgebungsvariable PATH zu lesen, und habe festgestellt, dass mit System.Environment.GetEnvironmentVariable die Umgebungsvariablen automatisch erweitert werden.

Ich wollte nicht, dass das passiert. Das bedeutet, dass Ordner im Pfad wie '% SystemRoot%\system32' in 'C:\Windows\system32' umgeschrieben wurden. Um den nicht erweiterten Pfad zu erhalten, musste ich Folgendes verwenden:

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

Arbeitete wie ein Zauber für mich.

30
Nathan Bedford

Dies funktioniert für eine Umgebungsvariable, bei der es sich um eine Maschineneinstellung handelt. Ändern Sie für Benutzer stattdessen einfach zu Benutzer.

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
13
SpeedyNinja

Get and Set

Get

string getEnv = Environment.GetEnvironmentVariable("envVar");

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
10
Tom Stickel
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
6

Ich könnte in der Lage sein, die Umgebungsvariable zu aktualisieren, indem ich das folgende verwende

string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty;
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";"))
    EnvPath = EnvPath + ';';
EnvPath = EnvPath + @"C:\Test";
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);
0
Ajit