正如MSDN' WOW64 Implementation Details中所述,变量%PROGRAMFILES%
,
在64位Windows操作系统上的32位进程中,解析为C:\Program Files (x86)
在64位Windows操作系统上的64位进程中,解析为C:\Program Files
你可以验证这个,例如使用Delphi 10.1程序,使用32位Windows目标平台和64位Windows目标平台进行编译:
MyShellExecute('%PROGRAMFILES%');
因此,从Windows-64bit-OS中执行的32位Delphi应用程序,我怎么能得到两个:
32位程序的ProgramFiles目录(C:\Program Files (x86)
)
64位程序的ProgramFiles目录(C:\Program Files
)
答案 0 :(得分:6)
使用以下环境变量:
ProgramW6432
获取64位程序文件目录。ProgramFiles(x86)
获取32位程序文件目录。它们在32位和64位进程中返回相同的值。
当然,依赖环境变量总是有点脆弱。在创建流程之前,父流程始终可以修改这些变量。
为了使您的程序更加强大,您应该使用known folder IDs。使用FOLDERID_ProgramFilesX64
和FOLDERID_ProgramFilesX86
。