Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

[gelöst] DirectorySecurity: wie kann ich alle zugeordneten Gruppen/user löschen bzw. entfernen?
The_Mexican
myCSharp.de - Member

Avatar #avatar-2829.jpeg


Dabei seit:
Beiträge: 87
Herkunft: BW

Themenstarter:

[gelöst] DirectorySecurity: wie kann ich alle zugeordneten Gruppen/user löschen bzw. entfernen?

beantworten | zitieren | melden

Frage siehe Titel

Es reicht nicht nur die Rechte einer gruppe oder eines benutzers zu entfernen!

hat jemand ne idee?

greets
mex
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von The_Mexican am .
que? como? no entiendo!!!!!
private Nachricht | Beiträge des Benutzers
t2t
myCSharp.de - Member



Dabei seit:
Beiträge: 415
Herkunft: Hamburg

beantworten | zitieren | melden

Ich meine das müsste mit diesen Methoden klappen:


 // Removes an ACL entry on the specified directory for the specified account. 
        public void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights,
                                                InheritanceFlags Inheritance, PropagationFlags Propogation,
                                                AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object. 
            DirectoryInfo dInfo = new DirectoryInfo(FileName);
            // Get a DirectorySecurity object that represents the  
            // current security settings. 
            DirectorySecurity dSecurity = dInfo.GetAccessControl();
            // Add the FileSystemAccessRule to the security settings.  
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                             Rights,
                                                             Inheritance,
                                                             Propogation,
                                                             ControlType));
            // Set the new access settings. 
            dInfo.SetAccessControl(dSecurity);
        }

        // Removes an ACL entry on the specified directory for the specified account. 
        public void RemoveInheritablePermissons(string FileName)
        {
            // Create a new DirectoryInfo object. 
            DirectoryInfo dInfo = new DirectoryInfo(FileName);
            // Get a DirectorySecurity object that represents the  
            // current security settings. 
            DirectorySecurity dSecurity = dInfo.GetAccessControl();
            // Add the FileSystemAccessRule to the security settings. 
            const bool IsProtected = true;
            const bool PreserveInheritance = false;
            dSecurity.SetAccessRuleProtection(IsProtected, PreserveInheritance);
            // Set the new access settings. 
            dInfo.SetAccessControl(dSecurity);
        }

public void RemoveDirectorySecurityRecursive(string FileName, string Account, FileSystemRights Rights,
                                                InheritanceFlags Inheritance, PropagationFlags Propogation,
                                                AccessControlType ControlType)
        {
            try
            {
                string[] subDirs = Directory.GetDirectories(FileName);

                // Im aktuellen Ordner die Rechte setzen
                RemoveDirectorySecurity(FileName, Account, Rights, Inheritance, Propogation, ControlType);

                foreach (String strSubDir in subDirs)
                {
                    // Rekursiver Abstieg
                    RemoveDirectorySecurityRecursive(strSubDir, Account, Rights, Inheritance, Propogation, ControlType);

                    // Im Unterordner die Rechte setzen
                    RemoveDirectorySecurity(strSubDir, Account, Rights, Inheritance, Propogation, ControlType);
                }
            }
            catch
            {
            }
        }

Ein Aufruf der Methode zum Lese. und Schreibrechte entfernen könnte dann so aussehen:


accessManager.RemoveDirectorySecurityRecursive(args[4], "AF-HH\\" + args[3], FileSystemRights.FullControl,
                                             InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                                             PropagationFlags.None, AccessControlType.Allow);
private Nachricht | Beiträge des Benutzers
The_Mexican
myCSharp.de - Member

Avatar #avatar-2829.jpeg


Dabei seit:
Beiträge: 87
Herkunft: BW

Themenstarter:

beantworten | zitieren | melden

ohne den Code explizit getestet zu haben - das sieht gut aus ;)

Danke für die schnelle Hilfe

beim debuggen sollte man sich aber nicht wunder wenn nach ausführen des Codeblocks nicht alle Gruppen oder Benutzer in den Properties entfernt sind - den grund dieses Verhaltens kann ich allerdings nicht nachvollziehen

Vermutung - Vererbung bzw. Konfiguration von den übergeordneten Ordnern die Windows übernimmt

greets
mex
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von The_Mexican am .
que? como? no entiendo!!!!!
private Nachricht | Beiträge des Benutzers