如果我在具有 CSIDL_PROGRAM_FILESx86 文件夹 id 而不是 CSIDL_PROGRAM_FILES id 的 32 位系统中使用SHGetFolderPath api 调用会发生什么?
理论上 CSIDL_PROGRAM_FILESx86 应该映射到C:\program files (x86)
64 位系统,但它在不存在此路径的 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 Files
试试这个:
GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
YMMV