如果我在具有CSIDL_PROGRAM_FILESx86文件夹ID而不是CSIDL_PROGRAM_FILES ID的32位系统中使用SHGetFolderPath api调用会发生什么?
理论上CSIDL_PROGRAM_FILESx86应映射到64位系统中的C:\program files (x86)
,但它在不存在此路径的32位系统中映射到什么位置?
答案 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