包含其他环境变量的PATH环境变量

时间:2018-12-14 12:27:13

标签: c# environment-variables

我知道我可以通过以下方式查询任何环境变量:

System.Environment.GetEnvironmentVariable();

例如,现在我想要windir的值,即%SystemRoot%。但是,该函数将其解释为C:\Windows(这是SystemRoot的值)。

我通过使用Registry.LocalMachine.OpenSubKey()查询注册表项来获得相同的行为

是否可以从环境变量而不是路径中获取变量名? (我需要它以便轻松在我使用的多个安装版本的SDK之间切换。)

2 个答案:

答案 0 :(得分:2)

%WINDIR%%SYSTEMROOT%具有相同值的事实仅仅是一个巧合。很明显为什么会这样,但是它们仍然是独立变量。更改一个不会导致另一个更改。

您必须手动编写一些内容,以相同的值查找其他环境变量,并替换您想到的任何替换变量,例如%SYSTEMROOT%

答案 1 :(得分:2)

据我所知,唯一的方法是直接从注册表中读取环境变量,并指定您不希望扩展它:

registryKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

请参见the docs for RegistryValueOptions