Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Readonly-Attribut und Windows XP (https://www.delphipraxis.net/126835-readonly-attribut-und-windows-xp.html)

Skeeder 3. Jan 2009 07:33


Readonly-Attribut und Windows XP
 
Hallo!
Ich bin noch Anfänger mit Delphi, hoffe daher, dass ich mit "Windows API" wenigstens das richtige Forum erwischt hab.
Ich müsste eine Datei auf das Readonly-Attribut überprüfen, leider funktioniert das mit "FileIsReadOnly" nicht, da unter Windows XP damit nur überprüft wird, ob die Datei vorhanden ist oder nicht. Gibt es eine andere Möglichkeit unter Windows XP mittels Delphi festzustellen, ob eine Datei schreibgeschützt ist?
Danke schon jetzt für jede Hilfe!

Liebe Grüße
Daniel

mkinzler 3. Jan 2009 07:38

Re: Readonly-Attribut und Windows XP
 
Indem man die dateiattribute auswertet
http://www.delphibasics.co.uk/RTL.asp?Name=FileGetAttr

Skeeder 3. Jan 2009 08:56

Re: Readonly-Attribut und Windows XP
 
Danke erstmal für die Antwort!
Das habe ich auch schon probiert, allerdings führt das bei Verwendung von faReadOnly zu genau demselben Ergebnis wie bei Verwendung von "FileIsReadOnly". Existiert die Datei NICHT wird bei meinem Programm ausgegeben, dass die Datei schreibgeschützt ist, existiert die Datei jedoch (egal ob readonly oder nicht) wird IMMER ausgegeben, dass sie NICHT schreibgeschützt ist.

mkinzler 3. Jan 2009 08:59

Re: Readonly-Attribut und Windows XP
 
Welche Delphiversion? Was für ein Dateisystem?

Skeeder 3. Jan 2009 09:13

Re: Readonly-Attribut und Windows XP
 
Turbo Delphi Explorer 2006
NTFS

Christian Seehase 3. Jan 2009 09:46

Re: Readonly-Attribut und Windows XP
 
Moin Daniel,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Das die genannte Funktion bei einer nicht existierenden Datei immer ausgibt, dass sie ReadOnly ist ist nachvollziehbar.
Die Funktion FileGetAttr ist nur ein Wrapper um die API-Funktion GetFileAttributes.
Diese Funktion gibt im Fehlerfalle -1 zurück, es sind also alle Bits gesetzt, so dass jede Prüfung auf ein Attribut dieses als gesetzt erkennt.
Man muss erst einmal prüfen, ob der Funktionsaufruf überhaupt erfolgreich war (Rückgabewert <> -1) bevor man versucht daraus Attribute abzuleiten. Existiert die Datei nicht, müsste ein anschliessender Aufruf von GetLastError den Wert 2 zurückgeben (ERROR_FILE_NOT_FOUND).

Das andere Problem kann ich im Moment nicht nachvollziehen.

Skeeder 4. Jan 2009 07:35

Re: Readonly-Attribut und Windows XP
 
Hallo nochmal!

Danke, ich habs jetzt noch einmal probiert und mittlerweile hab ichs hinbekommen, so dass der Schreibschutz richtig erkannt wird.
Jetzt hab ich aber auch schon das nächste Problem, an das ich vorher noch gar nicht gedacht habe: Es müsste natürlich auch noch erkannt werden, ob der jeweilige Benutzer das Schreibrecht auf die Datei hat (laut den Windows-Sicherheitsrichtlinien).
Wie kann ich das hinbekommen, ich hab schon mal ein bisschen gesucht und bin dabei auf "GetFileSecurity" gestoßen. Ist das das Richtige für meinen Zweck und vor allem: wie wende ich die Routine an?
Nochmal ein großes Dankeschön an euch!

liebe Grüße
Daniel

toms 4. Jan 2009 07:45

Re: Readonly-Attribut und Windows XP
 
CheckAccessToFile von Nico

SirThornberry 4. Jan 2009 10:32

Re: Readonly-Attribut und Windows XP
 
Könntest du bitte für die neue Frage ein neues Thema eröffnen? Danke :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz