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%的情况下修改该值。但是如果你得到一个字符串文字,你就不能知道它可能有一个变量名。是的,这就是我要找的。非常感谢你。