问题描述
在Windows操作系统,使用C#进行应用程序编程开发时,如何检测指定的环境变量是否存在?
如果不存在,又怎样使用C#设置指定环境变量的值呢?
方案一
在.NET Framework中内置了可以操作Windows操作系统的类System.Environment
。
C#读取指定环境变量名的值的方法GetEnvironmentVariable()
,如下:
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
如果要设置一个环境变量,则使用SetEnvironmentVariable()
方法,如下:
System.Environment.SetEnvironmentVariable(variable, value [, Target])
备注:可选参数
target
是EnvironmentVariableTarget类型的枚举,它可以是:Machine
,Process
或者User
。如果省略,默认为Process
。EnvironmentVariableTarget.Machine需要使用超级管理员权限。
方案二
如果在控制台应用程序中,使用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);
方案三
另外一种读取和设置Windows操作系统环境变量的方式:
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);
希望以上方案对你在使用C#语言读取或者设置环境变量的程序开发时有所帮助。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册