Windows URLDownloadToFile失败,代码为0x800c0008(INET\u E\u下载失败)

Windows URLDownloadToFile失败,代码为0x800c0008(INET\u E\u下载失败),windows,https,download,Windows,Https,Download,我试图使用URLDownloadToFile下载一个文件,但在文件部分下载后,我发现INET_E_download_失败。我的电话看起来像: HRESULT hRes = ::URLDownloadToFile( NULL, strTemp, strDestination, 0, pCallback ); strTemp以以下形式提供URL: https://// PCCallback是IBindStatusCallback、IHttpSecurity和IWindowForBindingUI的

我试图使用URLDownloadToFile下载一个文件,但在文件部分下载后,我发现INET_E_download_失败。我的电话看起来像:

HRESULT hRes = ::URLDownloadToFile( NULL, strTemp, strDestination, 0, pCallback );
strTemp以以下形式提供URL:

https:////

PCCallback是IBindStatusCallback、IHttpSecurity和IWindowForBindingUI的实现

我能够让windows显示一个对话框,警告我该网站的安全证书(通过在IHttpSecurity::OnSecurityProblem中返回S_FALSE)

我在IBindStatusCallback::OnProgress中收到了几个调用,其中包含以下连续的ulStatus值:

BINDSTATUS_代理检测 BINDSTATUS\u COOKIE\u已发送 BindU连接状态 BINDSTATUS\u发送请求

在最后一次OnProgress调用之后,数据包嗅探器显示我从服务器下载了100+KB的数据(文件大小为18+MB)。然后我得到了对IBindStatusCallback::OnStopBinding的调用,hResult值为INET_E_DOWNLOAD_FAILURE

我知道写入目标目录的权限不是问题

我不确定是否正确处理了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;
}

关于可能出现的问题,你有什么想法吗?

我现在也有这个问题,尽管我上一次使用/开发这个程序是在6个月前,它工作得很好。但是,如果我使用管理员权限运行该程序,它可以正常工作

我的症状和韦恩很相似。Process monitors显示它通过TCP与服务器通信(尽管数据比没有管理员权限时略少),它还在两种模式下调用状态回调。要下载到的文件的位置是临时目录,不需要管理员权限

urlmon.dll的版本为11.00.96.17041 32位,日期为2014年3月,比之前使用的版本更新,但这是原因还是其他原因