Как получить информацию о разрешении на создание нового файла или изменение определенного файла в определенной директории?

В моей программе пользователи могут выбрать каталог для сохранения своих файлов или для изменения некоторых файлов в определенном каталоге. Программа должна выдавать предупреждение, если у пользователей нет прав на создание нового файла или изменение файла.

Но я понятия не имею, как реализовать эту функцию, кроме как создать тестовый файл. Если функция QFile::open(...) возвращает значение true, я понимаю, что текущий пользователь имеет доступ для записи.

Есть ли лучшая идея сделать это?


person user850062    schedule 19.07.2011    source источник


Ответы (1)


Используйте класс QFileSystemModel, у него есть метод

QFile::Permissions QFileSystemModel::permissions ( const QModelIndex & index ) const

Запросите разрешения для каталога, в котором вы хотите создавать файлы.

Кроме того, есть некоторые хитрости с разрешениями для Windows — загляните в docs — они должны быть явно включены в вашем приложении, и

QFile::ReadOwner
QFile::WriteOwner
QFile::ExeOwner

соответствует текущему пользователю

UPD - есть способ проще - просто пользуйтесь

QString dirName=<your dir>;
QFileInfo f(dirName);
f.permissions ();
person Raiv    schedule 19.07.2011
comment
Спасибо за ваш ответ. Я пробовал трюки, о которых вы упомянули, но он вернул все разрешения (должно быть, это неправильно, потому что я не могу создавать файлы в этом каталоге). Когда я добавляю фрагмент qt_ntfs_permission_lookup, представленный документом, результат был меньше, чем раньше. Это было без серии QFile::XXXXGroup. Я рассмотрю QFileSystemModel. Еще раз спасибо. - person user850062; 20.07.2011