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 Target
ist eine ENUM vom Typ EnvironmentVariableTarget
und es kann einer der folgenden sein: Machine
, Process
, oder User
. Wenn Sie es weglassen, ist das Standardziel der aktuelle Prozess.
EnvironmentVariableTarget.Machine
Administratorzugriff?
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.Machine
wird.
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);