Derzeit verwende ich diese Funktion, basierend auf Code JCL, der gut arbeitet:Wie kann ich mit Delphi testen, ob ein Verzeichnis beschreibbar ist?
function IsDirectoryWriteable(const AName: string): Boolean;
var
FileName: PWideChar;
H: THandle;
begin
FileName := PWideChar(IncludeTrailingPathDelimiter(AName) + 'chk.tmp');
H := CreateFile(FileName, GENERIC_READ or GENERIC_WRITE, 0, nil,
CREATE_NEW, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0);
Result := H <> INVALID_HANDLE_VALUE;
DeleteFile(FileName);
end;
Gibt es etwas, was ich mit den Flaggen verbessern könnte? Kann der Test durchgeführt werden, ohne tatsächlich eine Datei zu erstellen? Oder ist diese Funktionalität sogar bereits in einer der RTL- oder Jedi-Bibliotheken verfügbar?
Ist für Sie nicht den Code arbeiten? Gibt es etwas an diesem Ansatz, den du nicht magst? Es ist in der Tat eine sehr einfache (die einfachste?) Art des Testens für Verzeichnis-Schreibzugriff. Obwohl ich nie viel mit Windows-Sicherheit gearbeitet habe, denke ich, dass ein alternativer Ansatz die 'GetFileSecurity'-Funktion ist. –
@Andreas sehe meine Bearbeitung - wenn ich diese Funktion durch einen Aufruf einer vorhandenen Bibliotheksfunktion (vielleicht sogar mit Multiplattform-Unterstützung) ersetzen könnte, wäre dies definitiv eine Verbesserung. – mjn
Ich kann wirklich nichts dort sehen, das nicht in der RTL ist - was ist der JCL-Aufruf? –