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

C++ EndUpdateResource()引发错误110当windowsexplorer在输出位置打开时,系统无法打开指定的设备或文件,c++,file,resources,locking,handle,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()

以下代码仅当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);
std::ifstream-in(“C:\\Windows\\notepad.exe”,std::ios::binary);
std::of流输出(“D:\\test\\output\\notepad.exe”,std::ios::binary);

out我禁用了计算机上的按需病毒扫描程序,代码不再抛出错误。

这是关于目录对您正在写入的文件的权限的问题。至少对我来说是这样。我在桌面上写文件,它有
只读
属性,并且随机得到这个错误。我只需在桌面上创建一个文件夹并向其中写入文件就可以解决这个问题。因此,解决方案:
1) 不要将文件写入系统目录。
2) 自己创建一个目录
3) 编辑目录的属性。取消只读。要以编程方式执行此操作:


或者将它们结合起来。

禁用您的反恶意软件产品,然后重试。我无法编辑目标计算机上的安全设置,但我在没有病毒扫描程序的计算机上尝试了该代码,该代码似乎工作正常,因此很可能是问题所在。为什么createFile调用可以工作呢?如果病毒扫描程序锁定了exe,它不也应该失败吗?如果我在其中添加UpdateResource调用,为什么会起作用?这只是时间问题吗?我让it部门暂时禁用扫描仪进行测试,你是对的。是病毒扫描器。现在我只需要找一份工作。谢谢