1
编辑:看来它不起作用。似乎没有复制一些权限。 这是在Exchange 2010的Active Directory中。在屏幕截图中,有“RTCUniversalUserReadOnlyGroup”用户,“权限”列为空。这些权限根本不会被复制。有小费吗?通过C#继承Active Directory权限
我目前不得不以编程方式取消选中“在此目标的父项中包含可继承权限”复选框。
编辑:不得不把图像回URL形式:http://i47.tinypic.com/2a8fed5.jpg
我想通实际取消的方式,但是当你通过接口做到这一点,它会询问您是否要复制当前权限或删除它们。
我发现的唯一方法是手动列出权限,将它们放入临时变量中,然后在复选框被移除后重新添加它们。
using (DirectoryEntry entry = new DirectoryEntry(myPath))
{
List<ActiveDirectoryAccessRule> rules = new List<ActiveDirectoryAccessRule>();
foreach (object ruleObject in entry.ObjectSecurity.GetAccessRules(false, true, typeof(SecurityIdentifier)))
{
ActiveDirectoryAccessRule rule = ruleObject as ActiveDirectoryAccessRule;
if (rule.IsInherited)
{
rules.Add(rule);
}
}
foreach (object ruleObject in entry.ObjectSecurity.GetAccessRules(false, true, typeof(NTAccount)))
{
ActiveDirectoryAccessRule rule = ruleObject as ActiveDirectoryAccessRule;
if (rule.IsInherited)
{
rules.Add(rule);
}
}
entry.ObjectSecurity.SetAccessRuleProtection(true, false);
foreach (var rule in rules)
{
entry.ObjectSecurity.AddAccessRule(rule);
}
entry.CommitChanges();
}
我想知道是否有更好的方法来做到这一点,如果我失去了一些东西。它似乎现在工作得很好,但是感觉就像一旦项目部署完成,就会在我的屁股上咬我。
编辑你的问题显示图像:) – Shoban