Benutzer mit den meisten Antworten
How to modify FilesSystemRights of an existing AccessRule

Frage
-
I found tons of examples of adding and removing accessrules but no for modifiying a existing one.
my Code so far:// ReadData if (!(((int)FileSystemRights.ReadData & (int)ace.FileSystemRights) == (int)FileSystemRights.ReadData)) { ace.FileSystemRights = ace.FileSystemRights & FileSystemRights.ReadData; }
I Know that this is wrong: Einer Eigenschaft oder einem Indexer "System.Security.AccessControl.FileSystemAccessRule.FileSystemRights" kann nichts zugewiesen werden -- sie sind schreibgeschützt. But how shall I do that?
Ich möchte eine bestehende FileAccessRule bearbeiten, wenn sie nicht den Erfordernissen entspricht.
Antworten
-
Hallo Markus,
das ist aus gutem Grund nicht so möglich.
Denn die Zugriffslisten werden intern nach ihren Rechten uam. sortiert um eine eineindeutige
Abbildung zu erreichen,so haben u. a. Verweigerungen Vorrang vor Berechtigungen.Würde man das Ändern auf direktem Wege erlauben, würde diese Ordnung u. U.
durcheinander geraten und die Zugriffsliste nicht mehr richtig funktionieren.Was auch hinter der Aussage zur FileSecurity Klasse steckt:
Die FileSecurity-Klasse blendet viele Details von DACLs und SACLs aus.
Es sind keine Überlegungen zur ACE-Reihenfolge oder zu NULL-DACLS erforderlich.Um ein Recht zu modifizieren, rufe die Zugriffsliste ab, und ersetze die nicht gewünschten Rechte
durch ein Neues, in dem Du das alte enfernst und ein Neues anfügst, wie es auch das Beispiel zur
FileSecurity-Klasse zeigt.Gruß Elmar
- Als Antwort markiert Markus Strauss Freitag, 27. Mai 2011 17:54
-
Ich habe aber eine andere Lösung gefunden indem ich mit:
DirectorySecurity.ModifyAccessRule(AccessControlModification.Set,AccessRule,out Result);
Die falsche Regel durch die richtige ersetze- Als Antwort markiert Markus Strauss Freitag, 27. Mai 2011 17:54
Alle Antworten
-
Hallo Markus,
das ist aus gutem Grund nicht so möglich.
Denn die Zugriffslisten werden intern nach ihren Rechten uam. sortiert um eine eineindeutige
Abbildung zu erreichen,so haben u. a. Verweigerungen Vorrang vor Berechtigungen.Würde man das Ändern auf direktem Wege erlauben, würde diese Ordnung u. U.
durcheinander geraten und die Zugriffsliste nicht mehr richtig funktionieren.Was auch hinter der Aussage zur FileSecurity Klasse steckt:
Die FileSecurity-Klasse blendet viele Details von DACLs und SACLs aus.
Es sind keine Überlegungen zur ACE-Reihenfolge oder zu NULL-DACLS erforderlich.Um ein Recht zu modifizieren, rufe die Zugriffsliste ab, und ersetze die nicht gewünschten Rechte
durch ein Neues, in dem Du das alte enfernst und ein Neues anfügst, wie es auch das Beispiel zur
FileSecurity-Klasse zeigt.Gruß Elmar
- Als Antwort markiert Markus Strauss Freitag, 27. Mai 2011 17:54
-
Ich habe aber eine andere Lösung gefunden indem ich mit:
DirectorySecurity.ModifyAccessRule(AccessControlModification.Set,AccessRule,out Result);
Die falsche Regel durch die richtige ersetze- Als Antwort markiert Markus Strauss Freitag, 27. Mai 2011 17:54