我知道我可以通过以下方式查询任何环境变量:
System.Environment.GetEnvironmentVariable();
例如,现在我想要windir
的值,即%SystemRoot%
。但是,该函数将其解释为C:\Windows
(这是SystemRoot
的值)。
我通过使用Registry.LocalMachine.OpenSubKey()
查询注册表项来获得相同的行为
是否可以从环境变量而不是路径中获取变量名? (我需要它以便轻松在我使用的多个安装版本的SDK之间切换。)
答案 0 :(得分:2)
%WINDIR%
和%SYSTEMROOT%
具有相同值的事实仅仅是一个巧合。很明显为什么会这样,但是它们仍然是独立变量。更改一个不会导致另一个更改。
您必须手动编写一些内容,以相同的值查找其他环境变量,并替换您想到的任何替换变量,例如%SYSTEMROOT%
。
答案 1 :(得分:2)
据我所知,唯一的方法是直接从注册表中读取环境变量,并指定您不希望扩展它:
registryKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);