У меня есть следующий код, который должен удалить доступ пользователей из определенной папки. К сожалению, это не так (правило доступа остается на месте). Исключение не выбрано.
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);
Из моих журналов видно, что был вызван RemoveAccessRule. Почему не исчезло правило?
Изменить: Это правило является унаследованным. Нужно ли мне делать что-то другое, чтобы удалить унаследованные правила?
Взгляните на SetAccessRuleProtection на класс DirectorySecurity
, прочитав его. Думаю, вам понадобится..
ds.RemoveAccessRule(ar);
ds.SetAccessRuleProtection(true,false);
играйте с ним.