So ... ich habe es jetzt mal so gelöst ...
Delphi-Quellcode:
function FileExists64NoRedirection(Filename: string): Boolean;
type
TWow64DisableWow64FsRedirection = function(var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
TWow64RevertWow64FsRedirection = function(var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
var
hHandle: THandle;
Wow64DisableWow64FsRedirection: TWow64DisableWow64FsRedirection;
Wow64RevertWow64FsRedirection: TWow64RevertWow64FsRedirection;
Wow64FsEnableRedirection: LongBool;
Is64BitWin: boolean;
begin
Is64BitWin := False;
Wow64DisableWow64FsRedirection := nil;
Wow64RevertWow64FsRedirection := nil;
try
hHandle := GetModuleHandle('kernel32.dll');
@Wow64RevertWow64FsRedirection := GetProcAddress(hHandle, 'Wow64RevertWow64FsRedirection');
@Wow64DisableWow64FsRedirection := GetProcAddress(hHandle, 'Wow64DisableWow64FsRedirection');
if ((hHandle <> 0) and (@Wow64RevertWow64FsRedirection <> nil) and (@Wow64DisableWow64FsRedirection <> nil)) then
Is64BitWin := True;
except
Is64BitWin := False;
end;
if Is64BitWin then
begin
Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection);
Result := FileExists(Filename);
Wow64RevertWow64FsRedirection(Wow64FsEnableRedirection);
end
else
Result := FileExists(Filename);
end;
Es liegt wohl an der "File system redirection" von 64 Bit Systemen, die im System32 Ordner und anderen aktiv ist.
Aber irgendwie denke ich, das CG das mal etwas anpassen sollte.
Ich bin noch für andere Lösungen offen.