Esta sección ha sido probado por nuestros especialistas así garantizamos la veracidad de nuestro contenido.
Solución:
Utilice 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 Target
es una enumeración de tipo EnvironmentVariableTarget
y puede ser uno de: Machine
, Process
o User
. Si lo omite, el objetivo predeterminado es el proceso actual.
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:Windowssystem32’. Para obtener la ruta no expandida, tuve que usar esto:
string keyName = @"SYSTEMCurrentControlSetControlSession ManagerEnvironment";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
Funcionó como un encanto para mí.
Obtener y establecer
Obtener
string getEnv = Environment.GetEnvironmentVariable("envVar");
Establecer
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
valoraciones y comentarios
Si entiendes que ha sido de utilidad este post, nos gustaría que lo compartas con otros programadores de este modo contrubuyes a extender este contenido.