5

可能重复:
展开我的文档的环境变量

我们经常在 Windows Xp、7、Vista、Server 2003-2008R2 以及未来的 Windows 版本中的命令提示符中使用 %% 分隔的环境变量。例子是:

%windir%
%systemroot%
%temp%

我需要能够使用 C# 以编程方式解析这些环境变量。

请不要建议Environmen.SpecialFolder,因为我从上述格式的网络服务中获取值,我需要能够以编程方式解决它们并确定这些路径在服务器上的物理位置。我的场景是一个类库项目,我可能不需要/不能使用Server.MapPath

我正在寻找一种内置或自定义的通用方法,它可以帮助我以编程方式解析所有环境变量,并从这些变量计算本地物理路径,就像命令提示符或 Windows 资源管理器或运行命令一样!

我在 StackOverFlow 上看到过与这些类似的问题,但找不到任何标记的答案。请注意,这Environment.Xxxxx Enum不适合我正在处理的场景。

任何帮助表示赞赏。我正在使用带有 C# 的 .NET 4.0 Complete Framework Profile。

4

2 回答 2

13

您可以使用System.IO.Path.GetFullPath. 例如:

var resolvedPath = Path.GetFullPath("%WINDIR%");
或者,如果您只想扩展字符串中的变量,请使用 [`Environment.ExpandEnvironmentVariables`](http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx):
var expanded = Environment.ExpandEnvironmentVariables(
    "This is my %WINDIR% in %SYSTEMROOT%, and temp is %TEMP%")
于 2012-11-07T17:57:17.777 回答
9
Environment.ExpandEnvironmentVariables("%windir%\SomeFolder")
于 2012-11-07T17:59:09.773 回答