如何在不使用Environment Enum的情况下以编程方式解析环境变量?

Ste*_*son 4 .net c# windows class-library environment-variables

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

我们经常在Windows Xp,7,Vista,Server 2003-2008R2的命令提示符中使用%%分隔的环境变量,并且可能在将来的Windows版本中使用.例如:

%windir%
%systemroot%
%temp%
Run Code Online (Sandbox Code Playgroud)

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

请不要建议Environmen.SpecialFolder,因为我从上述格式的Web服务获取值,我需要能够以编程方式解析它们并确定这些路径在服务器上的物理位置.我的情况是一类libarary项目,我可以要求/能够使用Server.MapPath

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

我在StackOverFlow上看到过与此类似的问题,但找不到任何明显的答案.请注意,Environment.Xxxxx Enum我不能满足我正在进行的工作.

任何帮助表示赞赏.我使用.NET 4.0完整框架配置文件与C#.

lc.*_*lc. 13

你可以用System.IO.Path.GetFullPath.例如:

var resolvedPath = Path.GetFullPath("%WINDIR%");
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想扩展字符串中的变量,请使用Environment.ExpandEnvironmentVariables:

var expanded = ExpandEnvironmentVariables(
    "This is my %WINDIR% in %SYSTEMROOT%, and temp is %TEMP%")
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 8

Environment.ExpandEnvironmentVariables("%windir%\SomeFolder")
Run Code Online (Sandbox Code Playgroud)