我们经常在Windows Xp,7,Vista,Server 2003-2008R2以及未来的Windows版本中的命令提示符中使用%%分隔的环境变量。例如:
%windir%
%systemroot%
%temp%
我需要能够使用C#以编程方式解析这些环境变量。
请不要建议Environmen.SpecialFolder
,因为我从上述格式的Web服务获取值,我需要能够以编程方式解析它们并确定这些路径在服务器上的物理位置。我的场景是一个班级图书馆项目,我可能不要求/能够使用Server.MapPath
我正在寻找一个内置或自定义的通用方法,它可以帮助我以编程方式解析所有环境变量,并通过命令提示符或Windows资源管理器或运行命令来计算这些变量的本地物理路径!
我在StackOverFlow上看到过与此类似的问题,但找不到任何明显的答案。请注意Environment.Xxxxx Enum
无法满足我正在制作的方案。
感谢任何帮助。我正在使用带有C#的.NET 4.0完整框架配置文件。
答案 0 :(得分:13)
您可以使用 System.IO.Path.GetFullPath
。例如:
var resolvedPath = Path.GetFullPath("%WINDIR%");
或者,如果您只想扩展字符串中的变量,请使用Environment.ExpandEnvironmentVariables
:
var expanded = ExpandEnvironmentVariables(
"This is my %WINDIR% in %SYSTEMROOT%, and temp is %TEMP%")
答案 1 :(得分:8)
Environment.ExpandEnvironmentVariables("%windir%\SomeFolder")