2015-09-22 7 views
1

Следующий код генерирует ошибку 110 при вызове EndUpdateResource, только когда открыт проводник Windows в D: \ test \ output \ где исполняемый файл копируется в:EndUpdateResource() throws Ошибка 110 Система не может открыть устройство или файл, указанный при открытии windowsexplorer в месте вывода

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 Explorer, он отлично работает. Если я его открываю, это вызовет ошибку. Кроме того, если я создаю CreateFile с доступом для чтения и записи до вызова BeginUpdateResource, он будет работать нормально, даже если у меня есть папка вывода. Я действительно смущен и буду признателен за любую помощь. Благодаря!

+0

Отключите антивирусную программу и повторите попытку. –

+0

Я не могу редактировать параметры безопасности на целевой машине, но я попробовал код на машине без антивируса, и, похоже, код работает нормально, поэтому вполне может быть проблема. Почему вызов createFile работает? Разве это не так, если сканер вирусов заблокирован? И почему работает UpdateResource? Если я добавлю это там? Это просто хронометраж? – Perez

+0

Ну, я получил IT-отдел, чтобы временно отключить сканер, чтобы проверить, и вы были правы. Это был антивирус. Теперь мне просто нужно найти работу. Благодарю. – Perez

ответ

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

Или объединить все из них.