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);
YMMV
لا تنتمي إلى StackOverflow