【问题标题】:SHGetFolderPath() 32 bit vs 64 bitSHGetFolderPath() 32 位与 64 位
【发布时间】:2008-09-26 09:04:40
【问题描述】:

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

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

【问题讨论】:

    标签: winapi shell 64-bit path 32-bit


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      试试这个:

      GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
      

      YMMV

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-21
        • 1970-01-01
        • 2014-01-04
        • 2011-09-24
        • 2012-02-11
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多