Domanda

Ho il seguente codice, che dovrebbe rimuovere l'accesso degli utenti di una determinata cartella. Purtroppo non (la regola di accesso rimane al suo posto). Non viene generata un'eccezione.

AuthorizationRuleCollection arc = ds.GetAccessRules(true, true, typeof(NTAccount));

foreach (FileSystemAccessRule ar in arc)
{
    if (ar.IdentityReference is NTAccount)
    {
        NTAccount account = ar.IdentityReference as NTAccount;

        if (!AdminUsers.Contains(account.Value) &&
            ownerAccount != account.Value)
        {
            ds.RemoveAccessRule(ar);
            WriteLog("Removed rule for: " + account);
        }

     }
}

outputDirectory.SetAccessControl(ds);

Posso vedere dai miei log che il RemoveAccessRule è stato chiamato. Perché la regola non è andato?

Modifica La regola è una regola ereditaria. Ho bisogno di fare qualcosa di diverso per rimuovere le regole ereditate?

È stato utile?

Soluzione

Date un'occhiata a SetAccessRuleProtection sulla classe di DirectorySecurity, dalla lettura it..I potrebbe pensare che avresti bisogno ..

ds.RemoveAccessRule(ar);
ds.SetAccessRuleProtection(true,false);

giocare con essa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top