SHGetFolderPath() 32 бит против 64 бит
Вопрос
Что произойдет, если я использую SHGetFolderPath вызов API в 32-битной системе с идентификатором папки CSIDL_PROGRAM_FILESx86 вместо идентификатора CSIDL_PROGRAM_FILES?
Теоретически 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);
ЯММВ
Не связан с StackOverflow