如何获得ProgramFiles路径?

Ofi*_*fir 21 c#

我有奇怪的问题.

我使用的是Windows 7企业版sp1 64位.

我需要为我的项目获取程序文件和程序文件X86目录路径.这就是我所做的:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
Run Code Online (Sandbox Code Playgroud)

但这两行都返回程序文件X86文件夹.

我该如何解决?

小智 56

这适用于x86,x64或任何CPU配置:

string programFiles = Environment.ExpandEnvironmentVariables("%ProgramW6432%");
string programFilesX86 = Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%");
Run Code Online (Sandbox Code Playgroud)

因为使用环境变量ProgramW6432将始终返回Program Files文件夹,而这ProgramFiles将根据您的应用程序编译选项而有所不同.

  • 很棒的答案!需要注意的一点是:在Windows 7/Windows Server 2008 R2中添加了此环境变量,因此,如果您还不够支持早期版本的Windows,则可能需要备用解决方案.https://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx (7认同)
  • 这应该是公认的答案。您不应该仅仅为了获得路径而被迫更改目标架构...... (2认同)

Mic*_*uda 18

结果取决于您的项目定位的平台.如果你的目标86,那么这两个Environment.SpecialFolder.ProgramFilesEnvironment.SpecialFolder.ProgramFilesX86将返回相同的路径.

  • 这是挑剔,但他们实际上并没有返回路径.它们返回一个枚举值,需要与Environment.GetFolderPath()一起使用才能获取路径. (8认同)