从32位Windows应用程序启动64位可执行文件

什么是32位应用程序在64位Windows上查找“Program Files”文件夹的“正确”方法? 例如,我使用VBScript引擎运行32位应用程序,并且想要启动64位Excel(使用ShellExec或类似的)。 在32位的世界中,我将检查环境variables“ProgramFiles”以获取基础文件夹。 我的理解是,作为64位Windows上的32位应用程序,该环境variables将指向32位程序文件文件夹 – 例如:C:\ Program Files(x86)。 但我的64位Excel将在C:\ Program Files下。

我想避免硬编码对“c:\ program files”的引用。

您可以检查环境变量“ProgramW6432”。 在64位Windows上运行32位应用程序时,它应该存在并指向Program Files,而不使用x86。

文档: MSDN

根据Windows的版本,您应该使用已知的文件夹apis。

http://msdn.microsoft.com/en-us/library/bb776911%28v=VS.85%29.aspx

具体而言,您可以将FOLDERID_ProgramFilesX64SHGetKnownFolderPath结合使用。