我如何获得和设置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);