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

C# 包含其他环境变量的PATH环境变量,c#,environment-variables,C#,Environment Variables,我知道我可以通过调用以下命令查询任何环境变量: System.Environment.GetEnvironmentVariable(); 例如,现在我需要windir的值,即%SystemRoot%。但是,函数将其解释为C:\Windows(这是SystemRoot的值) 通过使用registry.LocalMachine.OpenSubKey() 有没有一种方法可以从环境变量而不是它们的路径中获取变量名?(我需要它以便在我使用的SDK的多个安装版本之间轻松切换。)事实上%WINDIR%和%S

我知道我可以通过调用以下命令查询任何环境变量:

System.Environment.GetEnvironmentVariable();
例如,现在我需要
windir
的值,即
%SystemRoot%
。但是,函数将其解释为
C:\Windows
(这是
SystemRoot
的值)

通过使用
registry.LocalMachine.OpenSubKey()


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

事实上
%WINDIR%
%SYSTEMROOT%
具有相同的值只是巧合。这是显而易见的原因,但它们仍然是自变量。更改一个不会导致更改另一个


您必须手动编写一些东西,找出具有相同值的其他环境变量,并替换您想到的任何替换变量,例如,
%SYSTEMROOT%

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

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

请参阅。

PATH往往是一个非常混乱的事件,它混合了字符串文字和环境%变量%名称。您必须在不展开%variables%的情况下修改该值。但是如果你得到一个字符串文字,你就不能知道它可能有一个变量名。是的,这就是我要找的。非常感谢你。