IDownloadManager::Download 中的 URLDownloadToFile 错误 (0x80004004)

Posted

技术标签:

【中文标题】IDownloadManager::Download 中的 URLDownloadToFile 错误 (0x80004004)【英文标题】:URLDownloadToFile Error(0x80004004) in IDownloadManager::Download 【发布时间】:2012-01-02 10:39:46 【问题描述】:

我使用 IDownloader 接口和 URLDownloadToFile 方法制作了 IE 的自定义下载器。 但是URLDownloadToFile返回0x80004004错误码。 我想知道!源代码有什么问题?

参考:http://social.msdn.microsoft.com/Forums/en/iewebdevelopment/thread/3fbcea06-4e69-4504-82e0-f4786368a5e2

STDMETHODIMP CDownloader::Download(IMoniker* pmk,  
        IBindCtx* pbc,  
        DWORD dwBindVerb,  
        LONG grfBINDF,  
        BINDINFO* pBindInfo,  
        LPCOLESTR pszHeaders,  
        LPCOLESTR pszRedir,  
        UINT uiCP )  
 
    LPOLESTR sDisplayName; 
    pmk->GetDisplayName(NULL, NULL, &sDisplayName);
    HRESULT hr = URLDownloadToFile(NULL, sDisplayName, L"C:\\downloaded.exe", 0, NULL);
    return S_OK;

【问题讨论】:

【参考方案1】:

这是 E_ABORT 的错误代码,因此看起来您的下载操作已中止

来自 MSDN:

“可以通过从任何回调中返回 E_ABORT 来取消下载操作”

但是由于你的回调是NULL,它可能是由其他一些问题引起的。

【讨论】:

当我从 URL Moniker 系统收到 0x80004004 错误代码时,我发现这非常有用,不知道它是 E_ABORT,谢谢!【参考方案2】:

我解决了。

Internet Explorer 上的 COM 对象必须在 IE 模板文件夹中创建文件。因为IE保护模式。

【讨论】:

以上是关于IDownloadManager::Download 中的 URLDownloadToFile 错误 (0x80004004)的主要内容,如果未能解决你的问题,请参考以下文章