SHGetFolderPath()32位和64位

时间:2020-03-06 14:46:23  来源:igfitidea点击:

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

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

解决方案

在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文件