문제

다음 코드가있어 특정 폴더에서 사용자의 액세스를 제거해야합니다. 불행히도 (액세스 규칙이 유지되지는 않습니다). 예외는 던져지지 않습니다.

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);

그것으로 놀아라.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top