我怎么能得到环境变量,如果有什么缺失,设置值?


当前回答

获取和设置

Get

string getEnv = Environment.GetEnvironmentVariable("envVar");

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);

其他回答

我在使用. 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);

对我来说很管用。

获取和设置

Get

string getEnv = Environment.GetEnvironmentVariable("envVar");

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);

我可以使用以下命令来更新环境变量

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);

这将适用于机器设置的环境变量。对于Users,只需更改为User即可。

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);