1

CSIDL_PROGRAM_FILES ID の代わりに CSIDL_PROGRAM_FILESx86 フォルダー ID を使用して 32 ビット システムでSHGetFolderPath API 呼び出しを使用するとどうなりますか?

理論的には、CSIDL_PROGRAM_FILESx86 はC:\program files (x86)64 ビット システムにマップする必要がありますが、このパスが存在しない 32 ビット システムでは何にマップされますか?

4

2 に答える 2

9

さまざまなシナリオについては、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 を指します

于 2008-09-26T09:33:43.857 に答える
1

これを試して:

GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);

YMMV

于 2011-06-01T16:55:10.330 に答える