测试反馈说程序升级的时候主进程的exe总替换不掉,起初以为是升级的时候没有进程没有退出,于是在很多地方添加了检测杀死进程的代码,结果问题依旧,后来才发现是360阻止了exe文件的覆盖,奇葩的是报错说替换会引起系统问题的错误。
还有一个费解的问题是360好像很有针对性,修改,删除这个exe都不会报错,但是替换就会阻止;
闲话少叙。说下发现:
开始的时候用的API是
MoveFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName) ;
int __cdecl rename(_In_z_ const char * _OldFilename, _In_z_ const char * _NewFilename);
结果报错之后阻止了函数的执行;
替换成
BOOL CopyFile( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists);
虽然报错但是没有阻止这个API的执行;