我知道用户更改 Windows 默认的 C:\Program Files
的概率相当小,但更奇怪的事情也发生过!
如何从系统中获取正确的 Program Files
路径?
我知道用户更改 Windows 默认的 C:\Program Files
的概率相当小,但更奇怪的事情也发生过!
如何从系统中获取正确的 Program Files
路径?
.NET提供了一个'特殊文件夹'的枚举,用于访问程序文件、我的文档等。
将枚举转换为实际路径的代码如下:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
只是为了补充一下。
如果你在32位模式下运行(即使在64位操作系统上),SpecialFolder.ProgramFiles和%PROGRAMFILES%将返回..Program Files (x86)。
如果您特别需要其中之一,或两者都需要,则需要按以下方式检查:
32位系统:
SpecialFolder.ProgramFiles
= ..Program Files\
32位进程的64位系统:
SpecialFolder.ProgramFiles
= ..Program Files (x86)\
Environment.GetEnvironmentVariable("ProgramW6432")
= ..Program Files\
64位进程的64位系统:
SpecialFolder.ProgramFiles
= ..Program Files\
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)")
= ..Program Files (x86)\
显然,这取决于您的区域设置等...
您可以在 Environment 类中使用 GetFolderPath 方法。
try {
Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
Console.Out.WriteLine( ex.StackTrace );
}
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
可能是最佳解决方案,但另一种可能的变体是评估 ProgramFiles
环境变量的值。为此,您可以使用 GetEnvironmentVariable
或 ExpandEnvironmentVariables
方法来访问 Environment
类:
Environment.GetEnvironmentVariable("ProgramFiles")
Environment.ExpandEnvironmentVariables("%ProgramFiles%")
你可以访问名为:%PROGRAMFILES% 的环境变量。
i.e:
%PROGRAMFILES%\Maxis\SimCity
用C#:
System.Environment.SpecialFolder.ProgramFiles
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
在64位Windows中获取“program files(x86)”,而在32位中获取“program files”。