SHGetFolderPath() 32 бит против 64 бит

Что произойдет, если я использую SHGetFolderPath вызов API в 32-битной системе с идентификатором папки CSIDL_PROGRAM_FILESx86 вместо идентификатора CSIDL_PROGRAM_FILES?

Теоретически CSIDL_PROGRAM_FILESx86 должен сопоставляться с C:\program files (x86) в 64-битной системе, но на что он сопоставляется в 32-битной системе, где этот путь не существует?


person RomanM    schedule 26.09.2008    source источник


Ответы (2)


Различные сценарии описаны в этой статье на 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

person Magnus Johansson    schedule 26.09.2008

Попробуй это:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);

YMMV

person Stlopus    schedule 01.06.2011