首页 > 解决方案 > 如何调用 Environment.GetEnvironmentVariable 而不会丢失 %PathVariableName% 例如 %SystemRoot%

问题描述

感谢像thisthis 这样的帖子,我能够获取 PATH 环境变量并随意修改它。

但是,一旦我调用System.Environment.GetEnvironmentVariable(name, scope),返回的字符串就不再具有 PATH 变量%PathVariableName%(例如%SystemDrive%)。

而不是预期的%SystemDrive%\folder,我得到了C:\folder

虽然它按预期运行,但如果可以,我更愿意保留变量。

当我调用 GetEnvironmentVariable 时,有什么方法可以保留这些路径变量名?

标签: c#windowsenvironment-variablespath-variables

解决方案


感谢@RetiredNinja,在Nathan Bedford 的回答中找到了答案。

基本上路径在注册表中可用,因此从那里检索字符串将允许我保留路径变量。

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

推荐阅读