SHGetFolderPath () 32 bit contro 64 bit
Domanda
Cosa succede se utilizzo SHGetFolderPath chiamata API in un sistema a 32 bit con ID cartella CSIDL_PROGRAM_FILESx86 invece dell'ID CSIDL_PROGRAM_FILES?
In teoria CSIDL_PROGRAM_FILESx86 dovrebbe essere mappato su C: \ program files (x86)
in un sistema a 64 bit ma a cosa si associa in un sistema a 32 bit dove questo percorso non esiste?
Soluzione
I diversi scenari sono descritti in questo articolo su MSDN .
Scorri verso il basso fino alle note, " 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
Riepilogo: punterà a% SystemDrive% \ Programmi
Altri suggerimenti
Prova questo:
GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
YMMV
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow