文件重定向与UrlDownloadToFile的丝丝纠缠

在wow64进程中,UrlDownloadToFile的逻辑是先把文件down到缓存目录,然后再从缓存目录MoveFile到目标地址。看起来没问题。

如果system启动了一个进程,那么这个进程的temp目录一般在c:\windows\syswow64\config\appdata\local\temp下。

假如我关闭了文件重定向,那么UrlDownloadToFile会产生什么样奇怪的化学反应呢?答案是:bug。

system启动的进程,关闭了文件重定向,然后调用UrlDownloadToFile。

UrlDownloadToFile会把文件缓存到c:\windows\syswow64\config...下,然后从c:\windows\ system32\config...把缓存文件移动到目标目录。

因为文件重定向关闭了,system32不会重定向到syswow64下,MoveFile失败。UrlDownloadToFile也宣告失败。

不过,估计微软也没考虑过这种倒霉情景。

解决方案:

UrlDownloadToFile下载到某个不会重定向的目录。
开启重定向。
MoveFileEx到所需位置。

标签:none

添加新评论

captcha
请输入验证码