SHGetFolderPath() 32 bit vs 64 bit

时光怂恿深爱的人放手 提交于 2019-12-24 11:29:24

问题


What happens if I use SHGetFolderPath api call in a 32 bit system with CSIDL_PROGRAM_FILESx86 folder id instead of the CSIDL_PROGRAM_FILES id?

Theoretically CSIDL_PROGRAM_FILESx86 should map to C:\program files (x86) in a 64 bit system but what does it map to in a 32 bit system where this path doesn't exist?


回答1:


The different scenarios are described in this article on MSDN.

Scroll down to remarks, "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

Summary: It will point to %SystemDrive%\Program Files




回答2:


Try this:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);

YMMV



来源:https://stackoverflow.com/questions/138379/shgetfolderpath-32-bit-vs-64-bit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!