2008-09-26 6 views
1

Que se passe-t-il si j'utilise l'appel API SHGetFolderPath dans un système 32 bits avec l'ID de dossier CSIDL_PROGRAM_FILESx86 au lieu de l'ID CSIDL_PROGRAM_FILES?SHGetFolderPath() 32 bits par rapport à 64 bits

Théoriquement, CSIDL_PROGRAM_FILESx86 doit correspondre à C:\program files (x86) dans un système 64 bits, mais à quoi correspond-il dans un système 32 bits où ce chemin n'existe pas?

Répondre

9

Les différents scénarios sont décrits dans this article on MSDN.

Faites défiler la liste des remarques, "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 pointera vers% SystemDrive% \ Program Files

+0

thnx :) –

1

Essayez ceci:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize); 

YMMV

Questions connexes