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


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

Author: Joel Coehoorn, 2008-10-09

6 answers

Utilice el Sistema .Environment class.

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 Target es una enumeración de tipo EnvironmentVariableTarget y puede ser uno de: Machine, Process, o User. Si lo omite, el destino predeterminado es el proceso actual .

 206
Author: Patrick Desjardins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-24 13:09:28

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

No quería que eso pasara...eso significa que las carpetas en la ruta de acceso 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í.

 30
Author: Nathan Bedford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-23 19:11:07

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

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
 9
Author: SpeedyNinja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-08 15:58:21

Obtener y Establecer

Get

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

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
 7
Author: Tom Stickel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-10 22:34:43
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
 6
Author: Karthik Chintala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-01 13:17:48

Podría ser capaz de actualizar la variable de entorno mediante el 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);
 1
Author: Ajit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 09:46:48