C# 如何在.NET中展开环境变量%CommonProgramFiles%\system\

C# 如何在.NET中展开环境变量%CommonProgramFiles%\system\,c#,.net,vb.net,C#,.net,Vb.net,在这种情况下,我需要通过读取注册表设置来返回目录路径。注册表值以以下格式返回路径 %CommonProgramFiles%\System\web32.dll 而消费者代码希望它以 C:\Program Files\Common Files\System\web32.dll 如何在.net代码中解析此类目录路径?。如果您控制注册表值的创建,请将其作为可扩展字符串存储在注册表中,注册表API将自动为您扩展它。您可以使用以下功能: string commonDir = Environment.Ge

在这种情况下,我需要通过读取注册表设置来返回目录路径。注册表值以以下格式返回路径

%CommonProgramFiles%\System\web32.dll
而消费者代码希望它以

C:\Program Files\Common Files\System\web32.dll
如何在.net代码中解析此类目录路径?

。如果您控制注册表值的创建,请将其作为可扩展字符串存储在注册表中,注册表API将自动为您扩展它。

您可以使用以下功能:

string commonDir = Environment.GetEnvironmentVariable("CommonProgramFiles");
然后可以使用附加路径的其余部分:

string fullPath = Path.Combine(commonDir, "System", "web32.dll");
另一个选择是使用。这将用其值替换所有环境变量:

string fullPath = Environment.ExpandEnvironmentVariables("%CommonProgramFiles%\System\web32.dll");

我需要一个完整的目录路径,它可以是任何其他环境变量,而不仅仅是%CommonProgramFiles%。我不明白你的评论,@Faisal
ExpandEnvironmentVariables
将展开它在您提供的字符串中看到的任何环境变量,并在您在问题中引用的特定情况下生成完整路径。当然,对
path.Combine的覆盖仅在框架的v4中起作用