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

从32位Windows应用程序启动64位可执行文件,windows,64-bit,32bit-64bit,Windows,64 Bit,32bit 64bit,32位应用程序在64位Windows上查找“Program Files”文件夹的“正确”方法是什么?例如,我正在运行一个带有VBScript引擎的32位应用程序,并希望启动64位Excel(使用ShellExec或类似工具)。在32位世界中,我会检查环境变量“ProgramFiles”以获取基本文件夹。我的理解是,作为64位Windows上的32位应用程序,该环境变量将指向32位程序文件文件夹-例如:C:\program files(x86)。但我的64位Excel将在C:\程序文件下 我希望避

32位应用程序在64位Windows上查找“Program Files”文件夹的“正确”方法是什么?例如,我正在运行一个带有VBScript引擎的32位应用程序,并希望启动64位Excel(使用ShellExec或类似工具)。在32位世界中,我会检查环境变量“ProgramFiles”以获取基本文件夹。我的理解是,作为64位Windows上的32位应用程序,该环境变量将指向32位程序文件文件夹-例如:C:\program files(x86)。但我的64位Excel将在C:\程序文件下


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

您可以检查环境变量“ProgramW6432”。在64位Windows上运行32位应用程序时,它应该存在并指向没有x86的程序文件


文档:

根据windows的版本,您应该使用已知的文件夹API


具体来说,您可以将
FOLDERID\u程序文件x64
SHGetKnownFolderPath
结合使用

太好了!这正是我需要的。谢谢如果运行64位应用程序,ProgramW6432会为空吗?在运行64位应用程序时,它很容易丢失。