Antworten:
Verwenden Sie die System.Environment- Klasse.
Die Methoden
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
und
System.Environment.SetEnvironmentVariable(variable, value [, Target])
wird den Job für Sie erledigen.
Der optionale Parameter Targetist eine ENUM vom Typ EnvironmentVariableTargetund es kann einer der folgenden sein: Machine, Process, oder User. Wenn Sie es weglassen, ist das Standardziel der aktuelle Prozess.
EnvironmentVariableTarget.MachineAdministratorzugriff?
Ich bin darauf gestoßen, als ich an einer .NET-Konsolen-App gearbeitet habe, um die Umgebungsvariable PATH zu lesen, und habe festgestellt, dass die Verwendung von System.Environment.GetEnvironmentVariable die Umgebungsvariablen automatisch erweitert.
Ich wollte nicht, dass das passiert ... das bedeutet, dass Ordner im Pfad wie '% SystemRoot% \ system32' als 'C: \ Windows \ system32' neu geschrieben 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.
Holen und setzen
Bekommen
string getEnv = Environment.GetEnvironmentVariable("envVar");
einstellen
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Dies funktioniert für eine Umgebungsvariable, bei der es sich um eine Maschineneinstellung handelt. Wechseln Sie für Benutzer stattdessen einfach zu Benutzer.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machinewird.
Ich könnte in der Lage sein, die Umgebungsvariable mithilfe der folgenden zu 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);