45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全

URLDownloadToFile URLDownloadToCacheFile下载文件api函数区别

电脑软硬件应用网 45IT.COM 时间: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查毒,误报现象得以解除。

顶一下
(2)
66.7%
踩一下
(1)
33.3%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识