2008-10-08 18 views

Antwort

192

Verwenden Sie die System.Environment-Klasse.

Verfahren

System.Environment.GetEnvironmentVariable() 

und

System.Environment.SetEnvironmentVariable() 

wird die Arbeit für Sie tun.

+33

Beachten Sie auch den optionalen dritten Parameter: System.Environment.SetEnvironmentVariable (Variable, Wert, ** EnvironmentVariableTarget **) Mögliche Werte sind: * Maschine *, * Prozess * und * User * –

+1

Does ' EnvironmentVariableTarget.Machine erfordert Administratorzugriff? – checksum

+0

Ja, tut es. Der Versuch, es ohne zu führen, führt zu einer offensichtlichen Ausnahme. –

8

Dies funktioniert für eine Umgebungsvariable, die Maschineneinstellung ist. Für Benutzer wechseln Sie stattdessen einfach zu Benutzer.

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

Ich lief in diese, während auf einer .NET-Konsolenanwendung arbeiten, um die Umgebungsvariable PATH zu lesen und festgestellt, dass System.Environment.GetEnvironmentVariable mit automatisch den Umgebungsvariablen erweitern.

Ich wollte das nicht passieren ... das heißt, Ordner im Pfad wie '% SystemRoot% \ system32' wurden als 'C: \ Windows \ system32' neu geschrieben. Um den unexpanded Pfad zu bekommen, 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 Charme für mich.

+5

+1 Ich musste diese Lösung verwenden, da der andere, der von Patrick Desjardins beantwortet wurde, Administratorrechte hatte. Ich konnte den Wert der Umgebungsvariable ohne Administratorrechte mit dieser Lösung lesen! –

6
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User); 
+1

Wenn Sie möchten, dass Ihre PATH-Variable dauerhaft verwendet wird, verwenden Sie stattdessen "EnvironmentVariableTarget.Machine". –

6

Get und Set

Get

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

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv); 
0

ich mit dem folgenden

die Umgebungsvariable aktualisieren Lage sein könnte
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); 
Verwandte Themen