编写软件的时候经常要遇到的情况就是需要从互联网上下载文件(比如升级程序或者获取程序信息等),一般来说我们使用的都是URLDownloadToFile函数,函数原型如下:
其中的pCaller、dwReserved和lpfnCB这三个参数都不重要,最主要的是szURL(要下载的文件url地址)和szFileName(要保存的文件路径和文件名)这两个参数,这个函数很方便,在哪种语言中调用都比较简单,但目前这个函数已经被多款防病毒软件盯上了,我之前写的一个程序A中只要调用该函数马上就会被瑞星误报,原因主要是太多的下载者程序和木马软件使用该函数下载病毒文件,虽然我的这个程序没什么危害但总被这样误报心里也确实不舒服,查了下msdn,找到了一个类似的函数:URLDownloadToCacheFile,可以实现同样的功能,但由于该函数在IE本身中就有很多调用,所以肯定不会被误杀,这个函数的原型如下:
其实跟URLDownloadToFile是很相似的,其中的lpUnkcaller、dwReserved和*pBSC参数可以不指定,一定要有的参数是szURL(要下载的文件url地址)、szFileName(保存文件名的指针)、dwBufLength(文件名缓冲区长度),该函数会默认下载文件到ie缓存目录里(看函数名就能想到),szFileName中保存的是文件路径,调用的时候可以直接获取szFileName打开文件。 用URLDownloadToCacheFile替换URLDownloadToFile函数再编译我之前所说的程序A,使用VIRUSTOTAL查毒,误报现象得以解除。 |