我知道我可以通过调用以下命令来查询任何环境变量:
System.Environment.GetEnvironmentVariable();例如,我想要windir的值,也就是%SystemRoot%。但是,该函数将其解释为C:\Windows (这是SystemRoot的值)。
通过使用Registry.LocalMachine.OpenSubKey()查询注册表项,我得到了相同的行为
有没有办法从环境变量中获取变量名,而不是它们的路径?(我需要它,以便在我使用的SDK的多个已安装版本之间轻松切换。)
发布于 2018-12-14 20:41:22
据我所知,唯一的方法是直接从注册表读取环境变量,并指定不希望扩展它:
registryKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);发布于 2018-12-14 20:35:15
%WINDIR%和%SYSTEMROOT%具有相同的值,这仅仅是一个巧合。原因很明显,但它们仍然是自变量。更改其中一个不会导致更改另一个。
你必须手动编写一些东西,寻找具有相同值的其他环境变量,并替换掉你脑海中的任何替代变量,例如%SYSTEMROOT%。
https://stackoverflow.com/questions/53779771
复制相似问题