QT: Probleme mit Berechtigungen/Dateiberechtigungen unter Windows
-
Hallo zusammen,
wir verwenden QT für unsere Programme und ich habe erstmals eine Windows (und Linux)-Anwendung erstellt (gab früher nur Mac-Programme). Es gab zuerst keinerlei Probleme, aber mit der Zugriffskontrolle unter Windows kenne ich mich nicht wirklich aus, nicht wirklich verwendet (nur in C# wie man Berechtigungen anfordert/abfragt). Nun gab's Probleme mit unserem Programm bei Kunden mit Vindows Vista, die eingeschränkte Konten haben (manuell angepasst, sehr restriktiv). Selbst konnte ich unter WIndows 7 das Problem mit einem normalen Benutzerkonto ohne Admin-Rechte nachvollziehen.
Für den Installer verwende ich Z-Up Maker; da konnte ich die Zugriffsberechtigungen für das Programm selbst auf "Gruppe jeder" setzen damit das Programm in allen Konten erfolgreich installiert werden kann.
Nun gibt es aber noch ein Problem:
Die erstellten Dateien lassen sich nur als Administrator richtig verwenden. Ansonsten fehlt der Zugriff, meist lässt sich eine Datei auch nicht mehr löschen (unter Win 7 erscheint nur "Elemente werden gesucht..."!
Ich versuchte folgendes um das Problem zu lösen in der Funktion, welche die Datei schreibt und auch welche eine neue erstellt:QFile f(inFile); f.setPermissions(QFile::WriteUser | QFile::WriteOther);
in der Hoffnung alle, inkl. Admins können dann den vollen Zugriff auf die mit dem Programm erstellten Dateien haben.
Allerdings funktioniert das leider genau so wenig.
Was schafft da Abhilfe?Vielen Dank!
-
Nun nach einigem Experimentieren weiss ich ein wenig mehr. Die Dateien werden nicht gefunden da sie vom Explorer blockiert werden. Und zwar darum:
Ich habe eine Shell-Extension geschrieben, welche Vorschau-Bildchen vom Inhalt der Dateien erzeugt. Als ich die DLL entfernte konnte ich die Dateien alle verwenden, in beiden Benutzerkonten.
Allerdings etwas ist dennoch eigenartig mit den Dateifunktionen: Mit anderen Dateien (unter älterem Windows oder Mac OS erstellte) funktioniert die Vorschau einwandfrei, ebenso wenn eine Datei direkt auf ein FAT32-Laufwerk statt NTFS gespeichert wird. Also etwas muss doch mit den Berechtigungen nicht stimmen.
Ich verwendete soeben Windows-Funktionen statt die QT-eigenen aber das half auch nicht.
Hat da jemand eine Idee?Danke