2008-09-26 5 views
1

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

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

ответ

9

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

+0

thnx :) – 2008-09-26 11:27:43

1

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

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize); 

YMMV