Was hast du denn erwartet? Die Funktion tut nichts anderes als zu versuchen die Datei zum Schreiben zu öffnen. Dann sagt sie, ob es fehlgeschlagen ist. Ohne Administratorrechte kannst du natürlich auch keine Systemdateien verändern.
Ja, das ist ein berechtigter Hinweis. Man sollte sich die verwendeten Parameter doch ein wenig genauer ansehen.
Letztlich will ich ja auch nur wissen, ob ich die Datei öffnen kann, schreiben will ich ja gar nicht, sondern nur durchsuchen.
Insofern mache ich da jetzt einfach was passendes draus (lasse also generic_write weg) und schon läuft es wie gewünscht:
Delphi-Quellcode:
function CanOpenFile(fName: string; CheckIfExist: Boolean) : boolean;
var
HFileRes: HFILE;
begin
Result := False;
if (CheckIfExist=True) and (not FileExists(fName)) then begin
Exit;
end;
HFileRes := CreateFile(PChar(fName)
,GENERIC_READ
,0
,nil
,OPEN_EXISTING
,FILE_ATTRIBUTE_NORMAL
,0);
Result := (HFileRes <> INVALID_HANDLE_VALUE);
if Result then begin
CloseHandle(HFileRes);
end;
end;