1

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

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

4

2 回答 2

9

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

于 2008-09-26T09:33:43.857 回答
1

试试这个:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);

YMMV

于 2011-06-01T16:55:10.330 回答