c# - 如何在不使用环境枚举的情况下在 C# 中以编程方式解析环境变量?

标签 c# .net windows environment-variables class-library

<分区>

Possible Duplicate:
Expand environment variable for My Documents

我们经常在 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。

最佳答案

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

var resolvedPath = Path.GetFullPath("%WINDIR%");

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

var expanded = Environment.ExpandEnvironmentVariables(
    "This is my %WINDIR% in %SYSTEMROOT%, and temp is %TEMP%")

关于c# - 如何在不使用环境枚举的情况下在 C# 中以编程方式解析环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275338/

相关文章:

c# - C# dot net 中的 webrtc 信令服务器

c# - LINQ to Entity Framework 多对多预加载问题

c# - .NET 4.0 中大量的私钥加密

windows - 通过 ffmpeg 的视频编解码器规范(未实现)

windows - 从程序和功能中自动卸载

c# - 从 Dictionary 迁移到 ConcurrentDictionary,我应该注意哪些常见陷阱?

c# - Windows 7 上的 SSL 客户端 SSPI 错误

c# - 尝试在 C# 中使用 ODBC 调用 Oracle 包时出现语法错误

windows - 资源管理器集成在上下文菜单中,但使用已经运行的实例

c# - 防止直接访问但允许从页面内下载文件