Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: IOResult und FileExists bei UAC unter Vista fehlerhaft?

  Alt 5. Apr 2007, 11:58
Hhhmmmm, so ganz scheint der Code von Nico mein Problem nicht zu lösen.
Ich will ja testen, ob eine Datei in ein Verzeichnis geschrieben werden kann. Demzufolge habe ich shmias Code mit Nicos Code kombiniert.

Delphi-Quellcode:
function TMainDlg.CheckWriteSuccess(Ordner: String) : Boolean;
var
   filename : string;
   hnd : THandle;
const
  TmpDateiname = 'mytmp.$$$';
begin
  filename := IncludeTrailingBackslash(ordner) + TmpDateiname;
  DeleteFile(PChar(filename));

  hnd := CreateFile(PChar(filename),GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  if hnd <> INVALID_HANDLE_VALUE then
  begin
    CloseHandle(hnd);

    Result := CheckAccessToFile(GENERIC_WRITE, filename); // <--

    DeleteFile(PChar(filename));
  end
  else
    Result := False;

  If Result = false then
    Showmessage('In den angegebenen Ordner "' + Ordner + '" kann die Software aufgrund eingeschränkter Zugriffsrechte nicht schreiben.');
end;

procedure TMainDlg.SaveDialogCanClose(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := CheckWriteSuccess(ExtractFilePath(SaveDialog.Filename));
end;
Wenn also im SaveDialog eine Datei angegeben wird, "schreibt shmia" die Testdatei und "Nico schaut", ob die vorhanden ist. Das will bei mir nicht klappen. CheckAccessToFile() gibt true zurück, obwohl die Datei nicht vorhanden ist... Oder habe ich jetzt einen Denkfehler?
  Mit Zitat antworten Zitat