Moin Jens,
das hier
fmOpenReadWrite + fmShareExclusive
ist gefährlich. Da es sich um ein Bitfeld handelt, sollte man die Werte mit OR verknüpfen, da man ansonsten ungültige Werte erhalten kann.
Auch wenn es so in der Delphi-Hilfe dokumentiert ist, würde ich den Rückgabewert von FileOpen nicht auf < 0, sondern auf = -1, besser noch, auf = INVALID_HANDLE_VALUE vergleichen, (INVALID_HANDLE_VALUE ist -1), da dieser Wert für CreateFile als "Aufruf fehlgeschlagen" definiert ist. (CreateFile wird intern von FileOpen benutzt).
Der Aufruf wird bei Dir deshalb fehlschlagen, da man mit FileOpen keine Verzeichnisse öffnen kann.
Hierzu solltest Du Dir mal
CreateFile anschauen, speziell auch FILE_FLAG_BACKUP_SEMANTICS, denn dieser Wert wird benötigt, um ein gültiges
Handle auf ein Verzeichnis zu erhalten.