Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Berechtigungen einer Datei setzen (jwscl) (https://www.delphipraxis.net/119230-berechtigungen-einer-datei-setzen-jwscl.html)

Dezipaitor 23. Aug 2008 18:53

Re: Berechtigungen einer Datei setzen (jwscl)
 
Aber das stimmt immernoch nicht so:

Du verwendest : Value.SID hier.
D.h. wenn die Instanz (Parameter) Value zerstört wird, dann wird die Instanz Value.SID ungültig, aber nicht nil!

Wenn du TJwSecurityAccessControlEntry überall durch TJwDiscretionaryAccessControlEntryAllow ersetzt, dann compiliert es, oder willst du auch Zugriffsverweigerungen setzen?

Delphi-Quellcode:
procedure ..SetAccessControlEntry(Value : TJwSecurityAccessControlEntry);
begin
  if FAccessControlEntry <> Value then
  begin
     if Value is TJwDiscretionaryAccessControlEntryDeny then
       FAccessControlEntry :=
         TJwDiscretionaryAccessControlEntryDeny.Create(Value as TJwDiscretionaryAccessControlEntryDeny)
     else
     if Value is TJwDiscretionaryAccessControlEntryAllow then
       FAccessControlEntry :=
         TJwDiscretionaryAccessControlEntryAllow.Create(Value as TJwDiscretionaryAccessControlEntryAllow)
     else
        //gibt noch eine Vielzahl anderer
        raise Exception.Create('Unsupported ACE type: '+Value.ClassName);
     FAccessControlEntry.Flags := [afObjectInheritAce, afContainerInheritAce];
  end;
end;

Alter Mann 23. Aug 2008 19:29

Re: Berechtigungen einer Datei setzen (jwscl)
 
Hi Christian,


Zitat:

Du verwendest : Value.SID hier.
D.h. wenn die Instanz (Parameter) Value zerstört wird, dann wird die Instanz Value.SID ungültig, aber nicht nil!
Das ist in diesem Fall unerheblich, ich muss nur eine Datei oder ein Verzeichnis von A nach B kopieren.
Die Dateien liegen in A und haben in den ACE's den User. Nun wird anhand seines Anmeldenamens ein
Verzeichnis in B erstellt, die ACE hinzugefügt und alle seine Dateien und Verzeichnisse aus A dort hinein kopiert.
Somit ist sichergestellt das nach Abschluss der Aktion die Benutzer nur auf das Zugreifen können
wo sie auch über die entsprechenden Rechte verfügen. Also nur "ALLOW".

Das heißt der Vorgang "Rechte ermitteln, Zwischenspeichern, Verzeichnis erstellen, Rechte setzen" wird nur einmal
ausgeführt. Sollte es währenddessen zu einem Fehler kommen, wird dies in ein log-file geschrieben.

Deine Anregung ist jedoch Interessant, ich werde mich der Sache mal annehmen und per PN melden,
dann machen wir die ADSI-Geschichte gleich mit.

Gruß Jörg

PS Das Wochenende ist gerettet und die neue Woche kann kommen.

Dezipaitor 23. Aug 2008 19:40

Re: Berechtigungen einer Datei setzen (jwscl)
 
Freut mich, dass es klappt.

Ich muss nur sicherstellen, dass die Benutzung korrekt ist. Das mit den SIDs ist leider eine Stolperfalle.
Sobald du FileEntry.SecurityDescriptor löscht, wird die SID, die auch in FAccessControlEntry zugewiesen wurde, gelöscht.
Und damit funktioniert FAccessControlEntry nicht mehr unbedingt korrekt.

Alter Mann 23. Aug 2008 19:51

Re: Berechtigungen einer Datei setzen (jwscl) (ERLEDIGT)
 
Hat einiges an Umdenken erfordert, habe bisher die Units von Collin Wilson benutzt.
Die laufen unter W2K3 R2 irgendwie nicht so wie erwartet(und bisher benutzt), daher
der Umstieg auf 'jwscl'.
So wie ich das einschätzen kann: SUPER :thumb: :thumb: :thumb:

Wie geschrieben, ich melde mich bei dir.

ERLEDIGT!!!

Dezipaitor 23. Aug 2008 21:54

Re: Berechtigungen einer Datei setzen (jwscl)
 
Ich kenne diese Units, nachdem ich vor einigen Monaten darauf aufmerksam gemacht wurde. Daher gibt es keinen Einfluss von denen auf die JWSCL.
JWSCL versucht zudem alle C typischen Merkmale zu verstecken aber trotdem zur Verfügung zu stellen. Leider bin ich nicht perfekt und daher gibt es einige Probleme mit der Konsistenz. Aber ich führe eine interne Liste :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz