Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.530 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: IsFileInUse : Ergebnis unterschiedlich im Admin-Modus

  Alt 18. Aug 2015, 23:26
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;
  Mit Zitat antworten Zitat