AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ordner mit Berechtigungen erstellen inkl. Vererben...(JWSCL)
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner mit Berechtigungen erstellen inkl. Vererben...(JWSCL)

Ein Thema von cherry · begonnen am 23. Mär 2010 · letzter Beitrag vom 24. Mär 2010
 
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Ordner mit Berechtigungen erstellen inkl. Vererben...(JWSCL)

  Alt 23. Mär 2010, 12:47
Hi there

Ich möchte in der Lage sein, Ordner zu erstellen, auf die man Benutzer berechtigen kann... Das geht bereits mit nachfolgender Funktion.
Ich habe aber leider festgestellt, dass die Berechtigungen nicht vom entaltenden Ordner an meinen neu erstellten vererbt werden.
Wie mach ich das bloss?

Delphi-Quellcode:
procedure TForm1.CreateDir(DirectoryName: string; FileSetting: TFileSetting);
var
  SD : TJwSecurityDescriptor;
  UserSid : TJwSecurityId;
  SecAttrPtr : PSecurityAttributes;
  AccessMask: Cardinal;
begin

  SD := TJwSecurityDescriptor.CreateDefaultByToken();

  try

    UserSid := TJwSecurityId.Create(EdSystemName.Text, EdAccountName.Text);

    // Kombiniere Berechtigungen
    if FileSetting.Read then
      AccessMask := GENERIC_READ;
    if FileSetting.Write then
      AccessMask := AccessMask or GENERIC_WRITE;
    if FileSetting.Modify then
      AccessMask := GENERIC_READ or GENERIC_WRITE;
    if FileSetting.Execute then
      AccessMask := AccessMask or GENERIC_EXECUTE or GENERIC_READ;
    if FileSetting.FullAccess then
      AccessMask := GENERIC_ALL;

    // Berechtigungseintrag in Liste einfügen
    if AccessMask > 0 then
      SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce,afContainerInheritAce], AccessMask, UserSid, false));

    // Eventuell neuen Entrag mit anderen Vererbungen setzten "Ordnerinhalt auflisten"
    if (FileSetting.List) and (not FileSetting.FullAccess) then
    begin
      AccessMask := GENERIC_EXECUTE or GENERIC_READ;
      SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afContainerInheritAce], AccessMask, UserSid, false));
    end;

    SecAttrPtr := SD.Create_SA();

    jwaWindows.CreateDirectory(PWideChar(DirectoryName), Pointer(SecAttrPtr));
  except
    MessageDlg('Fehler beim erstellen des Ordners oder beim setzen der Berechtigung!', mtError, [mbOK], 0);
  end;

  SD.Free;

end;
Danke schon mal
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
 


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 14:11 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