|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
|
crYon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.11.2006 Репутация: нет Всего: нет |
Здравствуйте. Столкнулся со странной проблемой.
Имеется некий самодельный инсталлятор на чистом С++/WinAPI, который из zip-архива, содержащегося в ресурсе exe-шника, разархивирует группу файлов в указанный каталог. При этом, если файлы существуют, сначала он их удаляет (для эксперимента даже сделал поочередно удаление функцией DeleteFile из WinBase.h и функцией remove из stdio.h). Обнаружил, что по прошествии определенного времени (более месяца) существующие файлы перестают удаляться, функция DeleteFile не отрабатывает, а код системной ошибки GetLastError равен 0x5 ("отказано в доступе"). При этом, если проинсталлировать файлы в другой каталог, а потом сразу же попробовать проинсталлировать в него же повторно, то все файлы успешно удаляются и пересоздаются. Т.е. DeleteFile отрабатывает. Я также сравнил свойства файла, который не может быть удален, со свойствами файла, который успешно удаляется, и не обнаружил никаких различий во вкладке "безопасность" между правами на файл для групп и пользователей. Компьютер не в домене, пользователь всего один, и учетная запись не менялась уже несколько лет. Никаких действий с учетной записью тоже не проводилось. Инсталлятор использует библиотеку XUnzip с открытым кодом, и я проверил, что при разархивировании файлы создаются следующим вызовом функции:
Между тем, файлы, которые создавались моим инсталлятором, но в последствии не могут быть им удалены/пересозданы, спокойно удаляются любым другим способом - через проводник или, например, Total Commander. Проблема не только на моем компьютере, но и на многих других компьютерах. Как минимум, она повторяется на WinXP, Win7 и Win10. Посоветуйте, пожалуйста, на что обратить внимание. Может, есть версии возможных причин. Спасибо. |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
скорее всего установка была из под прав администратора , а удаление без них
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
crYon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 30.11.2006 Репутация: нет Всего: нет |
Нашел причину. Не заметил сразу, что на файлах появились атрибуты "только для чтения". Откуда они взялись, я не знаю, но теперь перед удалением файлов я делаю вызов
и все нормально удаляется. |
|||
|
||||
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |