AGB  ·  Datenschutz  ·  Impressum  







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

Ordner-Rechte entziehen

Ein Thema von grasshopper · begonnen am 3. Apr 2013 · letzter Beitrag vom 3. Apr 2013
 
grasshopper

Registriert seit: 3. Apr 2013
2 Beiträge
 
#1

Ordner-Rechte entziehen

  Alt 3. Apr 2013, 11:26
Hi!

Ich arbeite für meine Firma gerade an einem selbstgemachten Installer.

Dort habe ich mit der Jedi WSCL einem Ordner (und Unterordner und -Dateien) alle Rechte für "Jeden" gegeben.
Das sieht (als Test-Funktion) so aus:
Code:
procedure TfrmMain.Button1Click(Sender: TObject);
var
  UserToken : TJwSecurityToken;
  SD : TJwSecurityDescriptor;
  FileObject : TJwSecureFileObject;
  Owner : TJwSecurityId;
  DACL : TJwDAccessControlList;
begin
  if DirectoryExists('D:\test2') then
  begin
    JwInitWellKnownSIDs;
    UserToken := TJwSecurityToken.CreateTokenEffective(MAXIMUM_ALLOWED);
    Owner := UserToken.GetTokenOwner;
    try
      FileObject := TJwSecureFileObject.Create('D:\test2');

      DACL := FileObject.DACL;
      DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], GENERIC_ALL, JwWorldSID, false));
      FileObject.SetDACL(DACL);
    finally
      FileObject.Free;
      Owner.Free;
      UserToken.Free;
    end;
  end;
end;
Jedoch besteht bei mir die Befürchtung, dass die Rechte der anderen Benutzer einen höheren Stellenwert haben, und so zum Beispiel ein anderer Nutzer trotzdem nicht schreibend darauf zugreifen kann.

Deswegen sollen jetzt alle Rechte für alle anderen Benutzer weg.
Allerdings scheitert es bei mir schon beim Entziehen der Rechte.

Ich habe versucht, beim Erstellen des DACL's die AccessMask durch eine leere zu erstzen, also statt:
Code:
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]GENERIC_ALL[/B], JwWorldSID, false));
dann das hier:
Code:
DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [afObjectInheritAce, afContainerInheritAce], [B]$00000000[/B], JwWorldSID, false));
Aber das funktioniert nicht.

In der JWSCL habe ich nichts gefunden.
Nur die Klasse TJwDiscretionaryAccessControlEntryDeny (statt TJwDiscretionaryAccessControlEntryAllow), allerdings verweigert das dann die Rechte, anstatt sie nur zu entziehen.


Kann mir jemand helfen?
Danke!

PS: Über die Sinnhaftigkeit vom Geben aller Rechte brauchen wir nicht zu diskutieren. Ist vielleicht nicht die Beste Möglichkeit, aber in unserem Anwendungsfall zumindest akzeptabel.
  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 18:49 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