遇到与此相同的问题: CoCreateInstance issue on windows 7 {基本上使用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.