Вопрос

Что произойдет, если я использую 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);

ЯММВ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top