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

¿Cómo puedo obtener variables de entorno y si falta algo, establecer el valor?

Use la clase System.Environment.

El método

System.Environment.GetEnvironmentVariable() 

y

 System.Environment.SetEnvironmentVariable() 

hará el trabajo por ti.

Me encontré con esto mientras trabajaba en una aplicación de consola .NET para leer la variable de entorno PATH, y descubrí que al usar System.Environment.GetEnvironmentVariable expandiría 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 el camino 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í.

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); 
 Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User); 

Obtener y establecer

Obtener

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

Conjunto

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

Podría actualizar la variable de entorno utilizando 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);