WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

URLDownloadToFile URLDownloadToCacheFile下载文件api函数区别

更新时间:2012-11-29 10:57 作者:佚名点击:

编写软件的时候经常要遇到的情况就是需要从互联网上下载文件(比如升级程序或者获取程序信息等),一般来说我们使用的都是URLDownloadToFile函数,函数原型如下:


HRESULT URLDownloadToFile(
    LPUNKNOWN pCaller,
    LPCTSTR szURL,
    LPCTSTR szFileName,
    DWORD dwReserved,
    LPBINDSTATUSCALLBACK lpfnCB
);

其中的pCaller、dwReserved和lpfnCB这三个参数都不重要,最主要的是szURL(要下载的文件url地址)和szFileName(要保存的文件路径和文件名)这两个参数,这个函数很方便,在哪种语言中调用都比较简单,但目前这个函数已经被多款防病毒软件盯上了,我之前写的一个程序A中只要调用该函数马上就会被瑞星误报,原因主要是太多的下载者程序和木马软件使用该函数下载病毒文件,虽然我的这个程序没什么危害但总被这样误报心里也确实不舒服,查了下msdn,找到了一个类似的函数:URLDownloadToCacheFile,可以实现同样的功能,但由于该函数在IE本身中就有很多调用,所以肯定不会被误杀,这个函数的原型如下:


HRESULT URLDownloadToCacheFile(
    LPUNKNOWN lpUnkcaller,
    LPCSTR szURL,
    LPTSTR szFileName,
    DWORD dwBufLength,
    DWORD dwReserved,
    IBindStatusCallback *pBSC
);

其实跟URLDownloadToFile是很相似的,其中的lpUnkcaller、dwReserved和*pBSC参数可以不指定,一定要有的参数是szURL(要下载的文件url地址)、szFileName(保存文件名的指针)、dwBufLength(文件名缓冲区长度),该函数会默认下载文件到ie缓存目录里(看函数名就能想到),szFileName中保存的是文件路径,调用的时候可以直接获取szFileName打开文件。

用URLDownloadToCacheFile替换URLDownloadToFile函数再编译我之前所说的程序A,使用VIRUSTOTAL查毒,误报现象得以解除。

顶一下
(3)
75%
踩一下
(1)
25%
------分隔线----------------------------
你可能感兴趣的内容