2014-01-29 270 views
0

我想使用URLDownloadToFile下載文件,但在文件部分下載後得到INET_E_DOWNLOAD_FAILURE。我的電話是這樣的:URLDownloadToFile失敗,代碼0x800c0008(INET_E_DOWNLOAD_FAILURE)

HRESULT hRes = ::URLDownloadToFile(NULL, strTemp, strDestination, 0, pCallback); 

strTemp給出了形式的網址:

的https:////

pCallback是IBindStatusCallback,IHttpSecurity和IWindowForBindingUI的實現。

我能夠讓窗口顯示一個對話框,警告我關於網站的安全證書(通過返回IHttpSecurity :: OnSecurityProblem中的S_FALSE)。

我得到了IBindStatusCallback :: OnProgress幾個電話,這個繼承ulStatus值:

BINDSTATUS_PROXYDETECTING BINDSTATUS_COOKIE_SENT BINDSTATUS_CONNECTING BINDSTATUS_SENDINGREQUEST

,去年OnProgress調用之後,數據包嗅探器顯示,我得到100 +從服務器下載的數據的KB(該文件爲18 + MB)然後,我使用hResult值INET_E_DOWNLOAD_FAILURE調用IBindStatusCallback :: OnStopBinding。

我知道寫入目標目錄的權限不成問題。

我不知道我是否正確處理IBindStatusCallback :: GetBindInfo和:: OnStartBinding。這裏是我的每個代碼:

STDMETHODIMP CDownloadCallback::GetBindInfo(DWORD* pBINDF, BINDINFO* pBindinfo) 
{ 
    *pBINDF = BINDF_PULLDATA | BINDF_NOWRITECACHE | BINDF_GETNEWESTVERSION; 
    return S_OK; 
} 

STDMETHODIMP CDownloadCallback::OnStartBinding(DWORD dwReserved, IBinding* pBinding) 
{ 
    return E_NOTIMPL; 
} 

有什麼想法可能會出錯?

回答

0

我現在也有這個問題,雖然當我上次使用/開發程序6個月前它工作正常。但是,如果我用管理員權限運行該程序,它工作正常。

我的症狀與韋恩的非常相似。進程監視器顯示它通過TCP與服務器通信(儘管數據比不具有管理權限的數據稍少)它也在兩種模式下調用狀態回調。要下載到的文件的位置是臨時目錄,不需要管理員權限。

urlmon.dll的版本是日期爲2014年3月的11.00.96.17041 32位,它比以前使用的版本更新,但是這是原因還是其他原因?