遇到与此相同的问题: 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.