2008-09-26 180 views
1

如果我在32位系统中使用SHGetFolderPath api调用,CSIDL_PROGRAM_FILESx86文件夹标识而不是CSIDL_PROGRAM_FILES标识,会发生什么情况?SHGetFolderPath()32位与64位

理论上,CSIDL_PROGRAM_FILESx86应该映射到64位系统中的C:\program files (x86),但是它在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); 

因人而异