2008-10-08 23 views

Respuesta

192

Utilice la clase System.Environment.

El método

System.Environment.GetEnvironmentVariable() 

y

System.Environment.SetEnvironmentVariable() 

va a hacer el trabajo para usted.

+33

También tenga en cuenta el tercer parámetro opcional: System.Environment.SetEnvironmentVariable (variable, valor, ** ** EnvironmentVariableTarget) Los valores posibles son: * La máquina *, * * Proceso y * Usuario * –

+1

¿El ' EnvironmentVariableTarget.Machine' requiere acceso de administrador? – checksum

+0

Sí, lo hace. Intentar ejecutarlo sin generará una excepción obvia. –

8

Esto funcionará para una variable de entorno que es la configuración de la máquina. Para los usuarios, simplemente cambie a usuario en su lugar.

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

me encontré con esto mientras se trabaja en una aplicación de consola .NET para leer la variable de entorno PATH, y se encontró que el uso de System.Environment.GetEnvironmentVariable se expandirá automáticamente las variables de entorno.

No quería que eso sucediera ... eso significa que las carpetas en la ruta, como '% SystemRoot% \ system32', se estaban reescribiendo como 'C: \ Windows \ system32'. Para obtener la ruta no expandido, tuve que usar esto:

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

funcionó como un encanto para mí.

+5

+1 Tuve que usar esta solución porque la otra respondida por Patrick Desjardins requería que tuviera privilegios de administrador. ¡Pude leer el valor de la variable de entorno sin tener privilegios de administrador con esta solución! –

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

Si desea que su variable PATH sea de uso permanente 'EnvironmentVariableTarget.Machine' en su lugar. –

6

obtener y establecer

Get

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

Establecer

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

pude ser capaz de actualizar la variable de entorno mediante el uso de la siguiente

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); 
Cuestiones relacionadas