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

问题描述 投票:1回答:2

仅当在D:\ test \ output \中打开Windows资源管理器时,以下代码才会在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,即使我打开了输出文件夹,它也能正常工作。我真的很困惑,希望得到任何帮助。谢谢!

c++ file resources locking handle
2个回答
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

或者结合所有这些。

© www.soinside.com 2019 - 2024. All rights reserved.