如何以编程方式检索“Program Files”文件夹的实际路径?

时间:2009-07-06 05:48:16

标签: c# .net windows windows-xp program-files

  

可能重复:
  C# - How to get Program Files (x86) on Windows Vista 64 bit

我意识到用户更改Windows默认值C:\Program Files的可能性相当小,但是发生了奇怪的事情!

如何从系统中获取Program Files的正确路径?

6 个答案:

答案 0 :(得分:35)

.NET为程序文件,我的文档等提供了“special folders”的枚举。

从枚举转换为实际路径的代码如下所示:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx

答案 1 :(得分:28)

只是添加到此。

如果您在32位模式下运行(即使在64位操作系统上),SpecialFolder.ProgramFiles和%PROGRAMFILES%将返回..Program Files(x86)。

如果您特别需要一个和/或另一个,那么您需要检查如下:

32 位系统:

SpecialFolder.ProgramFiles = ..程序文件\

32 位进程中

64 位系统: SpecialFolder.ProgramFiles = ..程序文件(x86)\ Environment.GetEnvironmentVariable("ProgramW6432") = ..程序文件\

64 位进程中

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类的ExpandEnvironmentVariablesEnvironment方法:

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位中获取“程序文件”。