سؤال

ماذا يحدث إذا استخدمت 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top