可能重复:
如何获得Windows Vista 64位上的程序文件(x86)
我意识到用户更改Windows默认的C:\Program Files的几率是相当渺茫,但奇怪的事情发生了!
我怎样才能从系统中获得Program Files的正确path?
.NET为程序文件,我的文档等提供了“ 特殊文件夹 ”的枚举。
从枚举转换为实际路径的代码如下所示:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
只是为了增加这一点。
如果你在32位模式下运行(即使在64位操作系统上),SpecialFolder.ProgramFiles和%PROGRAMFILES%将返回..程序文件(x86)。
如果你特别需要一个和/或另一个,那么你需要检查如下:
32位系统:
SpecialFolder.ProgramFiles = ..程序文件\
32位进程中的64位系统: SpecialFolder.ProgramFiles = ..程序文件(x86)\ Environment.GetEnvironmentVariable("ProgramW6432") ProgramW6432 Environment.GetEnvironmentVariable("ProgramW6432") = ..程序文件\
64位系统中的64位系统: SpecialFolder.ProgramFiles = ..Program Files \ Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") = ..程序文件(x86)
显然这取决于你的语言环境等…
您将在Environment类中使用GetFolderPath 。
try { Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles ) catch( ArgumentException ex ) { Console.Out.WriteLine( ex.StackTrace ); }
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)可能是最好的解决方案,但另一个可能的变体是评估ProgramFiles环境变量的值。 为此,可以使用Environment类的GetEnvironmentVariable或ExpandEnvironmentVariables方法:
Environment.GetEnvironmentVariable("ProgramFiles") Environment.ExpandEnvironmentVariables("%ProgramFiles%")
您可以访问名为:%PROGRAMFILES%的环境变量
即:
%PROGRAMFILES%\Maxis\SimCity
在C#中:
System.Environment.SpecialFolder.ProgramFiles
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
在64位Windows中获得“程序文件(x86)”,在32位中获得“程序文件”。