Answers:
方法
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
和
System.Environment.SetEnvironmentVariable(variable, value [, Target])
将为您完成这项工作。
可选参数Target
是类型的枚举EnvironmentVariableTarget
,它可以是以下之一:Machine
,Process
,或User
。如果省略它,则默认目标是当前进程。
EnvironmentVariableTarget.Machine
需要管理员权限?
我在使用.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);
对我来说就像一个魅力。
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machine
。
我可以通过使用以下命令来更新环境变量
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);