Folgender Code prüft, ob eine
bestehende Datei beschreibbar ist:
Delphi-Quellcode:
function FileIsWriteable(const filename:string):Boolean;
var
hnd: THandle;
begin
hnd := CreateFile(PChar(filename), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := hnd <> INVALID_HANDLE_VALUE;
if Result then
CloseHandle(hnd);
end;
Um zu prüfen, ob man in einem Verzeichnis eine neue Datei erzeugen kann,
also ob man Schreibrechte in einem Verzeichnis hat,
muss man einfach versuchen eine Datei zu schreiben.
Man sollte eine Dateiendung verwenden, die sonst nicht benützt wird (.tmp, .$$$).
Wenn man Pech hat, kann man die temporäre Datei erzeugen, aber danach nicht mehr löschen.
Das kommt aber relativ selten vor.