有时候我们在.NET Core程序中需要获取和设置操作系统环境变量的值。本文演示如何使用Environment.GetEnvironmentVariable和Environment.SetEnvironmentVariable方法,来获取和设置操作系统环境变量的值。
首先我们使用Windows命令行cmd,在Windows系统中创建一个环境变量myEnvironmentValue,注意要以管理员身份运行cmd(Run as administrator),cmd命令如下:
setx myEnvironmentValue "MyValue" /M
该命令在Windows系统中创建一个环境变量myEnvironmentValue,并设置其值为"MyValue",注意参数/M指定我们设置的是系统环境变量(不是用户环境变量),详情可以查看这里。
命令运行后显示"SUCCESS"就说明成功了:
现在我们查看Windows系统的环境变量,可以发现我们刚才通过命令行创建的环境变量myEnvironmentValue如下所示:
接下来我们新建一个.NET Core控制台项目,其代码如下所示,注意这段代码要求以管理员身份运行(Run as administrator)Visual Studio:
using System; namespace NetCoreEnvironmentVariable { class Program { static void Main(string[] args) { string myEnvironmentValue = Environment.GetEnvironmentVariable("myEnvironmentValue", EnvironmentVariableTarget.Machine);//获取操作系统环境变量myEnvironmentValue的值,如果操作系统不存在环境变量myEnvironmentValue,则Environment.GetEnvironmentVariable方法会返回null,注意参数EnvironmentVariableTarget.Machine指定了我们获取的是系统环境变量(不是用户环境变量),注意Environment.GetEnvironmentVariable方法并不需要我们的.NET Core程序要以管理员身份运行(Run as administrator),就能成功取出系统环境变量的值 Console.WriteLine($"myEnvironmentValue:" + myEnvironmentValue); myEnvironmentValue = "UpdatedValue";//环境变量myEnvironmentValue的新值 Environment.SetEnvironmentVariable("myEnvironmentValue", myEnvironmentValue, EnvironmentVariableTarget.Machine);//设置操作系统环境变量myEnvironmentValue的值,如果操作系统不存在环境变量myEnvironmentValue,那么Environment.SetEnvironmentVariable方法会在操作系统中创建一个名为myEnvironmentValue的环境变量,注意参数EnvironmentVariableTarget.Machine指定了我们设置的是系统环境变量(不是用户环境变量),而这要求我们的.NET Core程序要以管理员身份运行(Run as administrator),否则Environment.SetEnvironmentVariable方法会抛出异常 myEnvironmentValue = Environment.GetEnvironmentVariable("myEnvironmentValue", EnvironmentVariableTarget.Machine);//再次获取操作系统环境变量myEnvironmentValue的值 Console.WriteLine($"myEnvironmentValue:" + myEnvironmentValue); Console.WriteLine("Press key to end..."); Console.ReadKey(); } } }
其中需要注意Environment.GetEnvironmentVariable和Environment.SetEnvironmentVariable方法的EnvironmentVariableTarget参数,用于指定我们获取和设置的是Windows操作系统的系统环境变量,EnvironmentVariableTarget是一个枚举类型,其所有值解释如下:
字段 | ||
Machine | 2 | 在 Windows 操作系统注册表的 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 项中存储或从其中检索环境变量。 此值应仅用于在 Windows 系统上运行的 .NET 实现。 |
Process | 0 | 环境变量存储在与当前进程关联的环境块中,或者从其中检索。 |
User | 1 | 在 Windows 操作系统注册表的 HKEY_CURRENT_USER\Environment 项中存储或从其中检索环境变量。 此值应仅用于在 Windows 系统上运行的 .NET 实现。 |
可以看到EnvironmentVariableTarget枚举的值Machine和User,仅对Windows操作系统有效,对Linux操作系统不起作用。
上面代码运行的结果如下所示:
然后我们再次查看Windows系统的环境变量,可以发现环境变量myEnvironmentValue的值变为"UpdatedValue"了:
经测试在ASP.NET Core中,也可以用Environment.GetEnvironmentVariable方法来获取Windows操作系统中系统环境变量和用户环境变量的值。
.NET Core程序中,如何获取和设置操作系统环境变量的值
原文:https://www.cnblogs.com/OpenCoder/p/11201270.html