Russian Qt Forum
Сентябрь 30, 2024, 20:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работает QFile::setPermissions  (Прочитано 7059 раз)
spectre71
Гость
« : Август 21, 2009, 05:17 »

QT 4.5.2
Windows XP
NTFS
=========
Права администраторские
"D:/TestFile" - существует.
Изначально Permissions == 0x6600;
IFile.setPermissions - возвращает true. Однако Permissions не изменяются!
В чем может быть проблема?

Код
C++ (Qt)
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
 
void sb_pipeline2::on_testButton_9_clicked()
{
 qt_ntfs_permission_lookup++;
 QFile IFile("D:/TestFile");
 QFile::Permissions Permissions = IFile.permissions();
//  Permissions == 0x6600;
 Permissions |= QFile::ExeOther|QFile::ExeUser|QFile::ExeOwner|QFile::ExeGroup;
//  Permissions == 0x7711;
 if(!IFile.setPermissions(Permissions)) {
   QMessageBox::critical(0, "Error", "Cannot set file Permitions");
   return;
 }
 Permissions = IFile.permissions();
//  Permissions == 0x6600;
 if(Permissions & (QFile::ExeOther|QFile::ExeUser|QFile::ExeOwner|QFile::ExeGroup)) {
   QMessageBox::information(0, "Info", "Executable file");
 }
}

В обратную сторону тоже не работает:
0x7700 >> 0x6600
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 21, 2009, 09:32 »

А разве в винде есть Exe* пермижены? Подмигивающий
Для получения Executable проверяй расширение файла.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
spectre71
Гость
« Ответ #2 : Август 21, 2009, 09:42 »

А разве в винде есть Exe* пермижены? Подмигивающий
Для получения Executable проверяй расширение файла.
1) Есть!
2) Если снять "Exe" Permissions расширение не поможет, программа не запустится!
3) Для создания процесса QProcess, расшерение не важно, но он не стартует если нет "Exe" Permissions
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 21, 2009, 11:25 »

Что-то я о таких пермиженах не слышал. Может путаешь с политиками доступа?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #4 : Август 21, 2009, 14:04 »

нет, Spectre правильно говорит.
а на счёт setPermissions я тебе говорил, что нужно до сентября сделать, если нужно будет этим пользоваться. теперь уже поздно.

резюмирую: QFile::setPermissions на нтфс не работает.
Записан
spectre71
Гость
« Ответ #5 : Август 21, 2009, 15:00 »

нет, Spectre правильно говорит.
а на счёт setPermissions я тебе говорил, что нужно до сентября сделать, если нужно будет этим пользоваться. теперь уже поздно.

резюмирую: QFile::setPermissions на нтфс не работает.

Под виндами пока не так принципиально. Главное что-бы корректно работало для Mac и Linux.
Записан
ритт
Гость
« Ответ #6 : Август 21, 2009, 16:15 »

под никсами должно работать
Записан
ритт
Гость
« Ответ #7 : Август 24, 2009, 00:22 »

поспешил с выводами...имеется одна возможность...
если кто-то из заинтересованных в ближайший месяц-два реализует установку нтфс-пермиженов хотя бы в качестве сниппета, попробую пропихнуть данный функционал в 4.6.
/* я же временно вычёркиваю себя из списка заинтересованных, т.к. увлёкся одним своим старым проектом )) */
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.108 секунд. Запросов: 23.