SHGetFolderPath () 32 bits vs 64 bits
Question
Que se passe-t-il si j'utilise SHGetFolderPath appel de l'API dans un système 32 bits avec l'ID de dossier CSIDL_PROGRAM_FILESx86 à la place de l'ID de CSIDL_PROGRAM_FILES?
Théoriquement, CSIDL_PROGRAM_FILESx86 devrait correspondre à fichiers de programme C: \ (x86)
dans un système 64 bits, mais à quoi correspond-il dans un système 32 bits où ce chemin n'existe pas?
La solution
Les différents scénarios sont décrits dans cet article sur MSDN .
Faites défiler les remarques vers le bas, " 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
Résumé: il pointe sur% SystemDrive% \ Program Files
Autres conseils
Essayez ceci:
GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
YMMV
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow