Dateizugriffsrechte abfragen?



  • Hallo! Ich möchte ein programm schreiben das eine Datei in einem ordner speichert. Vor dem speichern soll das programm überprüfen ob das speichern möglich ist. Also genug rechte vorhanden sind. Wenn nicht speichere ich die datei in Temp.
    Wie kann ich die Schreibrechte abfragen?



  • Wenn CreateFile beim Speichern der Datei fehlschlägt und GetLastError den Fehler ERROR_ACCESS_DENIED zurückgibt, dann hast Du keine ausreichenden Rechte und kannst die Datei in Temp speichern.



  • Danke für schnelle Antwort!



  • sri schrieb:

    Wenn CreateFile beim Speichern der Datei fehlschlägt und GetLastError den Fehler ERROR_ACCESS_DENIED zurückgibt, dann hast Du keine ausreichenden Rechte und kannst die Datei in Temp speichern.

    Du fährst wahrscheinlich auch mit dem Auto einfach auf die Kreuzung, ohne auf die Ampel zu gucken oder? Und wenn es kracht, war rot.

    Guck dir mal GetFileSecurityW an.



  • Luckie schrieb:

    Du fährst wahrscheinlich auch mit dem Auto einfach auf die Kreuzung, ohne auf die Ampel zu gucken oder? Und wenn es kracht, war rot.

    Guck dir mal GetFileSecurityW an.

    Ich habe eine Vorliebe für einfachen und effektiven Code. CreateFile liefert mit einem Funktionsaufruf genau die Information, die ich haben will. Geht das Erstellen gut, kann ich die Daten gleich schreiben. Schlägt es fehl, benutze ich das Temp-Verzeichnis.

    Alternativ kann man natürlich auch 30+ Zeilen schreiben, um den Security Descriptor zu lesen und auszuwerten. Jeder so, wie er es mag.


  • Mod

    Sehe ich wie sri! Try&Error&Alternative ist hier ein guter Weg.



  • Na gut. Überredet. 😉



  • Es macht eigentlich fast nie Sinn den Security-Descriptor abzufragen. Womöglich macht es noch sinn, wenn man lokal schreibt. Auf Netzwerklaufwerken macht es aber fast nie Sinn, da hier auch noch diverse andere Sicherheitsmechanismen greifen können (z.B. Share-Security).

    Auch: Was machst Du wenn ein anderes Programm genau nach Deinem Sicherheits-Check die Datei schon erzeugt hat? Dann bringt Dir Deine schöne Abfrage nichts, da Du die Datei trotzdem nicht neu erzeugen kannst...


Log in to reply