32位应用程序在64位Windows上查找“Program Files”文件夹的“正确”方法是什么?例如,我正在运行带有VBScript引擎的32位应用程序,并且想要启动64位Excel(使用ShellExec或类似的)。在32位世界中,我会检查环境变量“ProgramFiles”以获取基本文件夹。我的理解是,作为64位Windows上的32位应用程序,该环境变量将指向32位程序文件文件夹 - 例如:C:\ Program Files(x86)。但我的64位Excel将在C:\ Program Files下。
我想避免硬编码对“c:\ program files”的引用。
答案 0 :(得分:4)
您可以检查环境变量“ProgramW6432”。当在64位Windows上运行32位应用程序时,它应该存在并指向没有x86的Program Files。
文档:MSDN
答案 1 :(得分:3)
根据Windows的版本,您应该使用已知的文件夹apis。
http://msdn.microsoft.com/en-us/library/bb776911%28v=VS.85%29.aspx
具体而言,您可以将FOLDERID_ProgramFilesX64
与SHGetKnownFolderPath
结合使用。