以下代码仅在Windows资源管理器在D:\ test \ output \打开时才会在EndUpdateResource调用上抛出110错误,其中可执行文件被复制到:
std::ifstream in("C:\\Windows\\notepad.exe", std::ios::binary);
std::ofstream out("D:\\test\\output\\notepad.exe", std::ios::binary);
out << in.rdbuf();
in.close();
out.close();
Handle hUpdateRes = BeginUpdateResource(_T("D:\\test\\output\\notepad.exe"), FALSE);
EndUpdateResource(hUpdateRes, FALSE);
只要我没有在Windows资源管理器中打开该文件夹就可以了。如果我打开它会引发错误。此外,如果我在BeginUpdateResource调用之前执行具有读写访问权限的CreateFile,即使我打开了输出文件夹,它也能正常工作。我真的很困惑,希望得到任何帮助。谢谢!
答案 0 :(得分:1)
我在计算机上禁用了随需应变的病毒扫描程序,代码不再引发错误。
答案 1 :(得分:1)
关于您正在编写的文件的目录权限。至少这对我来说。我在桌面上编写文件,该文件具有Read only
属性,并且随机出现此错误。我只需在桌面上创建一个文件夹并将文件写入其中即可解决问题。所以,解决方案:
1)不要将文件写入系统目录
2)自己创建目录
3)编辑目录的属性。以只读方式起飞。以编程方式执行:
How to Remove the Readonly attribute of a File MFC
removing readonly from folder, its sub folders and all the files in it
或者将所有这些结合起来。