精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究。点名“简易百科”和“闲暇巴”盗用锐英源原创内容。
随着Windows安全机制的加强,对于系统目录c:\windows\system32的控制越来越严格,有管理员权限的软件可以拷贝文件到C:\windows\system32目录,但使用CopyFile时,如果目标文件已经存在,则拷贝不了,拷贝不了使用GetLastError时,获取的错误是32,32号错误是文件被占用不能覆盖,但客户的环境和要求还必须要实现功能,所以就想办法。
CopyFile的第三个参数在FALSE时,如果目标文件存在,则返回假,表示失败。比如:
BOOL bRet = CopyFile(sSrc, sDest, FALSE);
先是想着删除使用DeleteFile,还是不行,心情悲惨。
文件被占用是指文件被软件打开使用,没有关闭,把对应的软件关闭,就可以CopyFile了,如果确实找不到软件,让客户重启机器就可以,不是工业商业级别用户的状态,重启机器解决问题可以理解。
这个问题是制作一个小众软件的安装包时遇到的,虽然锐英源软件也擅长AdvancedInstall制作软件安装包,但是这个安装包也比较特殊,比较有意思。锐英源非常擅长处理一些架构和细节问题,欢迎合作。