Wie kann ich mit Delphi testen, ob ein Verzeichnis beschreibbar ist?

8

Zur Zeit verwende ich diese Funktion, basierend auf JCL-Code, die gut funktioniert:

%Vor%

Kann ich irgendetwas mit den Flaggen verbessern? Kann der Test durchgeführt werden, ohne tatsächlich eine Datei zu erstellen? Oder ist diese Funktionalität sogar schon in einer der RTL- oder Jedi-Bibliotheken verfügbar?

    
mjn 30.08.2010, 09:38
quelle

4 Antworten

15

Das Schreiben in das Verzeichnis ist der einfachste Weg, um festzustellen, ob das Verzeichnis beschreibbar ist. Es gibt zu viele Sicherheitsoptionen, die einzeln überprüft werden können, und selbst dann könnten Sie etwas verpassen.

Sie müssen das geöffnete Handle auch vor dem Aufruf von DeleteFile () schließen. Was Sie sowieso nicht tun müssen, da Sie das Flag FILE_FLAG_DELETE_ON_CLOSE verwenden.

Übrigens, es gibt einen kleinen Fehler in Ihrem Code. Sie erstellen einen temporären String und weisen ihn einem PWideChar zu, aber der String verlässt den Gültigkeitsbereich und gibt den Speicher frei, bevor der PWideChar tatsächlich verwendet wird. Ihre FileName-Variable sollte ein String anstelle eines PWideChar sein. Führen Sie die Typumwandlung beim Aufrufen von CreateFile () aus, nicht vorher.

Versuchen Sie Folgendes:

%Vor%     
Remy Lebeau 31.08.2010, 17:15
quelle
3

Hier ist meine Version mit GetTempFileName versucht, eine eindeutige temporäre Datei im Zielverzeichnis zu erstellen:

%Vor%     
kobik 07.09.2017 10:44
quelle
2

Andreas ...

Die Verwendung der Sicherheits-APIs, um die effektiven Rechte für eine Datei / ein Verzeichnis zu erhalten, ist eine PIA-Unordnung und einfach nicht zuverlässig. (Ich habe meinen gesamten Code dafür ausgegeben, um nur zu überprüfen, ob ich eine Datei in das Verzeichnis schreiben könnte.)

C.f., Ссылка

(Ich habe andere Referenzen, aber ich bin ein neuer Benutzer und kann nur einen Link posten. Folgen Sie einfach den URLs, die Sie oben angegeben haben.)

    
Erik Knowles 30.08.2010 16:23
quelle
0

Sie müssen lediglich Ihre Zugriffsrechte für das Verzeichnis überprüfen. Was ist daran falsch?

%Vor%     
Norman Rorke 11.07.2017 22:32
quelle