Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Не удаляется файл в Windows Vista


Автор: dencat 29.1.2010, 19:44
Возникла проблемка.

Приложение, написанное на Qt, создает файл 
 (  копирует из ресурса QFile::copy или просто записав данные 
Код

   QFile *file = new QFile( filepath); 
    file->open(QFile::WriteOnly);
    file->write(dt);
    file->close();


здесь это не важно ),
но потом не может его ни удалить (QFile::remove) ни перезаписать ( если запустить программу заново, но так, чтобы она другие данные записывала  в файл).

 Причем это наблюдается только в Vist'e, под XP работает нормально.

Не подскажите, куда рыть?

P.S. перед операцией над файлами изменяю права:

Код

QFile::setPermissions(filepath, QFile::WriteGroup | QFile::WriteOther | QFile::WriteOwner | QFile::WriteUser);


Автор: andrew_121 29.1.2010, 19:51
такое случается когда файлы создаешь/удаляешь в системных папках. как исправить - не создавать их там. другого способа не знаю.

Автор: dencat 29.1.2010, 19:52
Записывается все в C:/Program Files/XXX/

Автор: andrew_121 29.1.2010, 20:03
ну вот smile 

Автор: ecspertiza 30.1.2010, 11:18
Вообще в висте это проблема, у меня даже была проблема когда я не мог данные в БД добавить, а все из-за ее якобы безопасности, попробуй сначала руками права на файл выставь, или покури про Disable UAC.

http://www.thg.ru/software/windows_vista/windows_vista-06.html
http://www.petri.co.il/disable_uac_in_windows_vista.htm

Автор: Amp 30.1.2010, 12:36
Зачем писать в Program Files? Если пользователь сидит под ограниченной учеткой и запись кроме как в %HOME% запрещена везде, что будем делать?

Автор: dencat 30.1.2010, 18:06
Цитата

Зачем писать в Program Files?


А если пользователь сам выбирает, куда записывать файл и, по привычке, укажет program files.

Автор: Amp 30.1.2010, 20:56
Цитата(dencat @  30.1.2010,  18:06 Найти цитируемый пост)
А если пользователь сам выбирает, куда записывать файл и, по привычке, укажет program files. 

Если пользователь сам может в программе задать куда программа сохраняет свои конфигурационные файлы, то это хорошо. Если речь идет о каких-то документах, т.е. результатах работы программы и у пользователя есть привычка сохранять это в program files и у него есть права на это, что ж, его личное дело - разводить срач в системе.

Автор: dencat 31.1.2010, 11:26
Ну да ладно, разговор то не об этомsmile
Дело в том, что программа может записать файлы в директорию, а удалить/перезаписать уже нет...

Автор: Amp 31.1.2010, 14:59
Дык, как сказали выше - директория особенная + смешные потуги Висты следить за безопасностью. Я за озвученный вариант - не писать в системные каталоги smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)