我意识到用户更改 Windows 默认值的可能性C:\Program Files
很小,但奇怪的事情发生了!
如何Program Files
从系统获得正确的路径?
我意识到用户更改 Windows 默认值的可能性C:\Program Files
很小,但奇怪的事情发生了!
如何Program Files
从系统获得正确的路径?
.NET为 Program Files、My Documents 等提供了“特殊文件夹”的枚举。
从枚举转换为实际路径的代码如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
只是为了补充这一点。
如果您在 32 位模式下运行(即使在 64 位操作系统上),SpecialFolder.ProgramFiles 和 %PROGRAMFILES% 将返回 ..Program Files (x86)。
如果您特别需要一个和/或另一个,那么您需要检查如下:
32位系统:
SpecialFolder.ProgramFiles
= ..程序文件\
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
orExpandEnvironmentVariables
方法Environment
:
Environment.GetEnvironmentVariable("ProgramFiles")
Environment.ExpandEnvironmentVariables("%ProgramFiles%")
您可以访问名为:%PROGRAMFILES% 的环境变量
IE:
%PROGRAMFILES%\Maxis\SimCity
在 C# 中:
System.Environment.SpecialFolder.ProgramFiles
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
在 64 位 Windows 中获取“程序文件 (x86)”,在 32 位中获取“程序文件”。