これと同じ問題が発生しています: Windows 7 で CoCreateInstance の問題 {基本的に IFileOpenDialog を使用すると、「場所が利用できません」「C:\Windows\system32\config\systemprofile\Desktop が利用できない場所を参照しています」というエラーが発生することがあります。このメッセージが表示された後、ユーザーは続行できますが、ライブラリはコンテンツを正しく表示せず、かなり面倒です。}
このコードは、ユーザー権限で実行されている MFC アプリケーションで呼び出されていますが、問題は少なくとも 3 つのテスト システムで断続的にしか発生しません。
ダイアログを作成して表示するコードは次のとおりです。
IFileOpenDialog *pFileOpen = NULL;
HRESULT hr = CoCreateInstance(__uuidof(FileOpenDialog), NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileOpen));
if (SUCCEEDED(hr))
{
DWORD dwFlags = 0;
pFileOpen->GetOptions ( &dwFlags );
pFileOpen->SetOptions ( dwFlags | FOS_ALLOWMULTISELECT | FOS_PATHMUSTEXIST | FOS_FORCEFILESYSTEM );
pFileOpen->SetTitle ( L"Select file for upload" );
hr = pFileOpen->Show(this->GetSafeHwnd());
//everything after this for retrieving files selected works fine.