如何在C#中获取和设置环境变量?
-
06-07-2019 - |
题
如何获取环境变量,如果缺少某些内容,请设置值?
解决方案
使用 System.Environment 类。
方法
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
和
System.Environment.SetEnvironmentVariable(variable, value [, Target])
将为您完成这项工作。
可选参数 Target
是 EnvironmentVariableTarget
类型的枚举,它可以是以下之一: Machine
, Process
,或用户
。如果省略,则默认目标是当前流程。
其他提示
我在使用.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);
我可以使用以下
更新环境变量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);
不隶属于 StackOverflow