1 回答

TA貢獻1834條經驗 獲得超8個贊
GetAuthorizationGroups()會給你一個GroupPrincipal對象列表。但是,GroupPrincipal不會公開對象的權限。它確實DirectoryEntry在幕后使用,您可以使用:
var groupDe = (DirectoryEntry) group.GetUnderlyingObject();
然后您可以使用該ObjectSecurity屬性查看組對象的權限。
不過,這并不是非常直截了當。這個問題實際上有一些非常完整的代碼來檢索權限(就在問題中)。特別是這個:
var accessRules = groupDe.ObjectSecurity.GetAccessRules(true, true, typeof(NTAccount));
foreach (ActiveDirectoryAccessRule ar in accessRules)
{
Console.WriteLine($"{ar.IdentityReference.ToString()}");
Console.WriteLine($"Inherits - {ar.InheritanceType.ToString()}");
Console.WriteLine($"ObjectType - {ar.ObjectType.ToString()}");
Console.WriteLine($"InheritedObjectType - {ar.InheritedObjectType.ToString()}");
Console.WriteLine($"ObjectFlags - {ar.ObjectFlags.ToString()}");
Console.WriteLine($"AccessControlType - {ar.AccessControlType.ToString()}");
Console.WriteLine($"ActiveDirectoryRights - {ar.ActiveDirectoryRights.ToString()}");
Console.WriteLine($"IsInherited - {ar.IsInherited.ToString()}");
Console.WriteLine($"PropagationFlags - {ar.PropagationFlags.ToString()}");
Console.WriteLine("-------");
}
- 1 回答
- 0 關注
- 193 瀏覽
添加回答
舉報