¿Cómo obtengo y configuro las variables de entorno en C #?


Respuestas:


258

Use la clase System.Environment .

Los métodos

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

y

System.Environment.SetEnvironmentVariable(variable, value [, Target])

hará el trabajo por ti.

El parámetro opcional Targetes una enumeración de tipo EnvironmentVariableTargety puede ser uno de: Machine, Processo User. Si lo omite, el objetivo predeterminado es el proceso actual.


37
También tenga en cuenta el tercer parámetro opcional: System.Environment.SetEnvironmentVariable (variable, valor, EnvironmentVariableTarget ) Los valores posibles son: Máquina , Proceso y Usuario
Lessan Vaezi

1
¿ EnvironmentVariableTarget.MachineRequiere acceso de administrador?
suma de comprobación del

Sí lo hace Intentar ejecutarlo sin resultará en una excepción obvia.
Erez A. Korn

30

Me encontré con esto mientras trabajaba en una aplicación de consola .NET para leer la variable de entorno PATH, y descubrí que usar System.Environment.GetEnvironmentVariable expandirá las variables de entorno automáticamente.

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 expandida, 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í.


77
+1 Tuve que usar esta solución porque la otra respuesta de Patrick Desjardins me exigió tener privilegios de administrador. ¡Pude leer el valor de la variable de entorno sin tener privilegios de administrador con esta solución!
Tono Nam

La respuesta de @TonoNam Patrick funciona en mi máquina sin privilegios de administrador. Tenga en cuenta que la configuración de la variable de entorno del sistema requiere privilegios de administrador (por supuesto).
Franklin Yu

16

Obtener y establecer

Obtener

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

Conjunto

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

14

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

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

1
Si desea que su variable PATH sea de uso permanente en su EnvironmentVariableTarget.Machinelugar.
Daniel Bonetti

0

Podría actualizar la variable de entorno utilizando lo 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);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.