Frage

Wie kann ich Umgebungsvariablen erhalten und wenn etwas fehlt, setzen Sie den Wert?

War es hilfreich?

Lösung

Mit der System.Environment Klasse.

Die Methoden

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

und

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

wird die Arbeit für Sie tun.

Der optionale Parameter Target ist eine Enumeration des Typs EnvironmentVariableTarget und es kann einer der folgenden sein: Machine, Process oder User. Wenn Sie es weglassen, ist das Standardziel der aktuelle Prozess.

Andere Tipps

lief ich in diesen, während auf einer .NET-Konsolenanwendung arbeiten, um die Umgebungsvariable PATH zu lesen und festgestellt, dass System.Environment.GetEnvironmentVariable verwendet, wird die Umgebungsvariablen automatisch erweitern.

Ich wollte nicht, dass das passiert ... das heißt Ordner im Pfad wie ‚% SystemRoot% \ system32‘ neu geschrieben wurden als ‚C: \ Windows \ System32‘. Um den nicht erweiterten Weg zu bekommen, musste ich diese verwenden:

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

Arbeitete wie ein Charme für mich.

Dies wird für eine Umgebungsvariable arbeiten, die Maschineneinstellung ist. stattdessen für Benutzer, nur auf Benutzer ändern.

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

Get und Set

Get

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

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

ich in der Lage könnte die Umgebungsvariable unter Verwendung des folgenden

aktualisieren
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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top