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