如何获取Environnment变量,如果缺少某些内容,请设置值?
使用System.Environment类.
方法
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
和
System.Environment.SetEnvironmentVariable(variable, value [, Target])
会为你做的工作.
可选参数Target
是类型的枚举EnvironmentVariableTarget
,它可以是以下之一:Machine
,Process
,或User
.如果省略它,则默认目标是当前进程.
我在使用.NET控制台应用程序时遇到了这个问题来读取PATH环境变量,并发现使用System.Environment.GetEnvironmentVariable会自动扩展环境变量.
我不希望这发生......这意味着路径中的文件夹,例如'%SystemRoot%\ system32'被重写为'C:\ Windows\system32'.要获得未扩展的路径,我必须使用它:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
对我来说就像一个魅力.
这适用于作为机器设置的环境变量.对于用户,只需更改为用户.
String EnvironmentPath = System.Environment .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
获取和设置
得到
string getEnv = Environment.GetEnvironmentVariable("envVar");
组
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);