EndUpdateResource()抛出错误110当windowsexplorer在输出位置打开时,系统无法打开指定的设备或文件

时间:2015-09-22 22:25:45

标签: c++ file resources locking handle

以下代码仅在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,即使我打开了输出文件夹,它也能正常工作。我真的很困惑,希望得到任何帮助。谢谢!

2 个答案:

答案 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

或者将所有这些结合起来。