Wie komme ich und Umgebungsvariablen in C # gesetzt?
-
06-07-2019 - |
Frage
Wie kann ich Umgebungsvariablen erhalten und wenn etwas fehlt, setzen Sie den Wert?
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
aktualisierenstring 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);