我的应用程序通过将报告组合到一个文件中来向其最终用户显示报告,该.htm
文件放置在用户的临时文件夹中(通过调用GetTempPath
API 派生)。然后使用如下代码向用户显示:
//strCmd == file:///C:/Users/UserName/AppData/Local/Temp/My_Report.htm
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_FLAG_NO_UI;
sei.nShow = SW_SHOW;
sei.lpVerb = L"open";
sei.lpFile = strCmd.GetBuffer();
sei.hwnd = hParentWnd;
BOOL bInitialized = SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE));
if(ShellExecuteEx(&sei))
{
//Success
}
else
{
//Failed
REPORT_ERROR(GetLastError());
}
if(bInitialized)
{
CoUninitialize();
}
我刚从一位客户那里得到一份错误报告,显示上面的代码报告了ERROR_NO_ASSOCIATION
. 我得到的图片中的操作系统看起来像 Windows 8.1,或者可能是 Windows 7。
所以我一直试图通过删除所有文件关联.htm
和.html
文件扩展名来在虚拟机中复制它,但ShellExecuteEx
似乎从来没有失败过。在 Windows 10 上它总是打开 Edge,在 Win 8.1 上它显示这个弹出窗口:
有谁知道我可以如何复制该错误?