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?

È stato utile?

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
scroll top