SHGetFolderPath()32位对64位

时间:2008-09-26 09:04:40

标签: winapi shell 64-bit path 32-bit

如果我在具有CSIDL_PROGRAM_FILESx86文件夹ID而不是CSIDL_PROGRAM_FILES ID的32位系统中使用SHGetFolderPath api调用会发生什么?

理论上CSIDL_PROGRAM_FILESx86应映射到64位系统中的C:\program files (x86),但它在不存在此路径的32位系统中映射到什么位置?

2 个答案:

答案 0 :(得分:9)

this article on MSDN中描述了不同的方案。

向下滚动至备注“FOLDERID_ProgramFiles”

OS    Application KNOWNFOLDERID            Default Path                   CSIDL Equivalent  
32 bit    32 bit  FOLDERID_ProgramFiles    %SystemDrive%\Program Files    CSIDL_PROGRAM_FILES  
32 bit    32 bit  FOLDERID_ProgramFilesX86 %SystemDrive%\Program Files    CSIDL_PROGRAM_FILESX86  
32 bit    32 bit  FOLDERID_ProgramFilesX64 (undefined)    Not applicable  Not applicable

摘要:它将指向%SystemDrive%\ Program Files

答案 1 :(得分:1)

试试这个:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);

YMMV