如果我在32位系统中使用SHGetFolderPath api调用,CSIDL_PROGRAM_FILESx86文件夹标识而不是CSIDL_PROGRAM_FILES标识,会发生什么情况?SHGetFolderPath()32位与64位
理论上,CSIDL_PROGRAM_FILESx86应该映射到64位系统中的C:\program files (x86)
,但是它在32位系统中映射到哪个路径不存在?
如果我在32位系统中使用SHGetFolderPath api调用,CSIDL_PROGRAM_FILESx86文件夹标识而不是CSIDL_PROGRAM_FILES标识,会发生什么情况?SHGetFolderPath()32位与64位
理论上,CSIDL_PROGRAM_FILESx86应该映射到64位系统中的C:\program files (x86)
,但是它在32位系统中映射到哪个路径不存在?
不同的场景描述在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文件
试试这个:
GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
因人而异
thnx :) – 2008-09-26 11:27:43