我如何获得和设置C#中的环境variables?
我怎样才能得到环境variables,如果缺less的东西,设置值?
使用System.Environment类。
方法System.Environment.GetEnvironmentVariable()
和
System.Environment.SetEnvironmentVariable()
将为你做这项工作。
我在.NET控制台应用程序中读取PATH环境variables时遇到了这个问题,并发现使用System.Environment.GetEnvironmentVariable会自动扩展环境variables。
我不希望发生这种情况……这意味着path中的文件夹(如“%SystemRoot%\ system32”)被重写为“C:\ Windows \ system32”。 要获得未扩展的path,我必须使用这个:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
为我工作就像一个魅力。
这将适用于机器设置的环境variables。 对于用户,只需更改为用户。
String EnvironmentPath = System.Environment .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
获取并设置
得到
string getEnv = Environment.GetEnvironmentVariable("envVar");
组
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
我可以通过使用以下来更新环境variables
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);