in dem Programm an das ich gerade arbeite gibt es eine Funktion um eine Sicherung zu erstellen. Ich rufe dort eine QFileDialog auf mit dessen Hilfe der user den Pfad wählen kann an dem die Sicherung erstellt werden soll. Eine Kopie der DB-Datei aus dem Programmordner wird dann an dem gewählten Pfad erstellt.
Mein Problem ist jetzt, das ich vorher abfragen möchte ob der user die nötigen Schreibrechte für diesen Pfad hat.
Unter Linux funktioniert das mit Hile von QFileInfo::permission(QFile::WriteUser) bestens, aber unter Windows leider nicht. Dort gibt er mir immer true zurück, egal ob ich QFile::ReadUser bis QFile::ExeOther übergebe.
Gibt es eine andere Möglichkeit die Schreibrechte für einen Ordner unter Windows abzufragen???
Code: Alles auswählen
QFile file(QString("lava.sqlite"));
QString sFile=QFileDialog::getSaveFileName(this,QString("Sicherung erstellen"),sName);
QStringList ls;
if(sFile.length()>0)//file dialog finish with 'save'?
{
//file info (permission)
ls=sFile.split("/");
for(int i=0;i<ls.count()-1;i++)
s+=ls[i]+QString("/");
file_info.setFile(s);//nur der Pfad wird gesetzt
if(!file_info.permission(QFile::WriteUser))//funktioniert nur unter linux
{
msg.setText(QString("Sie haben keine Schreibrechte an diesem Ort!"));
msg.exec();
}
else
{
//check give it file?
QFile file2(sFile);
if(file.open(QIODevice::ReadOnly))
bFileExis=true;
file2.close();
if(bFileExis)
QFile::remove(sFile);//delete old file
//copy
if(!file.copy(sFile))
{
s=QString("Fehler beim Erstellen der Sicherung\n%1").arg(file.errorString());
s+=QString(" / errorcode: %1").arg(file.error());
msg.setText(s);
msg.exec();
}
}
}
file.close();