SHGetFolderPath()32ビットと64ビット
質問
CSIDL_PROGRAM_FILES IDの代わりにCSIDL_PROGRAM_FILESx86フォルダーIDを使用した32ビットシステムでのSHGetFolderPath API呼び出し?
理論的には、CSIDL_PROGRAM_FILESx86は64ビットシステムの C:\ program files(x86)
にマップする必要がありますが、このパスが存在しない32ビットシステムでは何にマップしますか?
解決
さまざまなシナリオについては、 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を指します
他のヒント
これを試してください:
GetEnvironmentVariable("ProgramW6432", szBuffer, nBufferSize);
YMMV
所属していません StackOverflow