AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wann ist eine Datei fertig geschrieben?

Ein Thema von Sharky · begonnen am 15. Sep 2007 · letzter Beitrag vom 15. Sep 2007
Antwort Antwort
grenzgaenger
(Gast)

n/a Beiträge
 
#1

Re: Wann ist eine Datei fertig geschrieben?

  Alt 15. Sep 2007, 13:20
luckie, hatte da mal eine routine gepostet...

Delphi-Quellcode:
FUNCTION CheckAccessToFile(DesiredAccess: DWORD; CONST FileName: WideString): BOOLEAN;
CONST
 GenericFileMapping: TGenericMapping = (
  GenericRead: FILE_GENERIC_READ;
  GenericWrite: FILE_GENERIC_WRITE;
  GenericExecute: FILE_GENERIC_EXECUTE;
  GenericAll: FILE_ALL_ACCESS
  );
VAR
 LastError: DWORD;
 LengthNeeded: DWORD;
 SecurityDescriptor: PSecurityDescriptor;
 ClientToken: THandle;
 AccessMask: DWORD;
 PrivilegeSet: TPrivilegeSet;
 PrivilegeSetLength: DWORD;
 GrantedAccess: DWORD;
 AccessStatus: BOOL;
BEGIN
 Result := False;
 LastError := GetLastError;
 IF NOT GetFileSecurityW(PWideChar(FileName), OWNER_SECURITY_INFORMATION OR
  GROUP_SECURITY_INFORMATION OR DACL_SECURITY_INFORMATION, nil, 0, LengthNeeded) AND
  (GetLastError <> ERROR_INSUFFICIENT_BUFFER) THEN
  Exit;
 SetLastError(LastError);
 Inc(LengthNeeded, $1000);
 SecurityDescriptor := PSecurityDescriptor(LocalAlloc(LPTR, LengthNeeded));
 IF NOT Assigned(SecurityDescriptor) THEN
  Exit;
 TRY
  IF NOT GetFileSecurityW(PWideChar(FileName), OWNER_SECURITY_INFORMATION OR
   GROUP_SECURITY_INFORMATION OR DACL_SECURITY_INFORMATION,
   SecurityDescriptor, LengthNeeded, LengthNeeded) THEN
   Exit;
  IF NOT ImpersonateSelf(SecurityImpersonation) THEN
   Exit;
  TRY
   IF NOT OpenThreadToken(GetCurrentThread, TOKEN_QUERY OR
    TOKEN_IMPERSONATE OR TOKEN_DUPLICATE, False, ClientToken) THEN
    Exit;
   TRY
    AccessMask := DesiredAccess;
    MapGenericMask(AccessMask, GenericFileMapping);
    PrivilegeSetLength := SizeOf(TPrivilegeSet);
    IF AccessCheck(SecurityDescriptor, ClientToken, AccessMask,
     GenericFileMapping, PrivilegeSet, PrivilegeSetLength,
     GrantedAccess, AccessStatus) THEN
     Result := AccessStatus;
   FINALLY
    CloseHandle(ClientToken);
   END;
  FINALLY
   RevertToSelf;
  END;
 FINALLY
  LocalFree(HLOCAL(SecurityDescriptor));
 END;
 //Möglicher Aufruf
 //procedure TForm1.Button1Click(Sender: TObject);
 //begin
 // if OpenDialog1.Execute then
 // ShowMessage(BoolToStr(
 // CheckAccessToFile(GENERIC_WRITE, // check for generic write access
 // OpenDialog1.FileName), True) + ': ' + SysErrorMessage(GetLastError));
 //end;
END;
um zu prüfen, ob man eine datei öffnen kann. denke, das ist eine möglichkeit, eine andere die von reinhard...

aber für mich stellt sich eine frage, wo läuft dein progy, auf dem fileserver, wo das andere progy die datei erzeugt? falls ja, glaub ich ich zu erinnern, dass da eine nachricht oder etwas ähnliches erzeugt wird.. wenn die datei geschlossen wird... aber da müsst luckie auch bescheid wissen. in der windows API kenn ich mich nicht so aus...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz