Tag: 帐户管理

GroupPrincipal.Members.Remove()不适用于大型AD组

我正在使用System.DirectoryServices.AccountManagement命名空间类来管理多个组的成员身份。 这些群体控制着我们的印刷会计系统的人口,其中一些非常庞大。 我遇到了从这些大组之一中删除任何用户的问题。 我有一个测试程序来说明问题。 请注意,我正在测试的组不是嵌套的,但user.IsMemberOf()似乎也有同样的问题,而GetAuthorizationGroups()正确显示用户所属的组。 有问题的小组大约有81K成员,因为Remove()不起作用,所以它应该超过它应该有的,并且通常大约是65K左右。 我有兴趣听到有其他人遇到过这个问题并已经解决了。 我和微软有一个公开的案例,但由于呼叫中心的时差大约是17个小时,所以电话转接很慢,因此他们在我离开家之前大约一个小时才到达工作岗位。 using (var context = new PrincipalContext( ContextType.Domain )) { using (var group = GroupPrincipal.FindByIdentity( context, groupName )) { using (var user = UserPrincipal.FindByIdentity( context, userName )) { if (user != null) { var isMember = user.GetAuthorizationGroups() .Any( g => g.DistinguishedName == group.DistinguishedName ); Console.WriteLine( “1: check for […]

扩展GroupPrincipal和Members属性

我想扩展GroupPrincipal类来处理一些自定义属性: using System.DirectoryServices.AccountManagement; [DirectoryRdnPrefix(“CN”)] [DirectoryObjectClass(“group”)] public class MyGroupPrincipal : GroupPrincipal { // … } 我如何覆盖MyGroupPrincipal的Members属性,以便如果它有一个组成员,则返回MyGroupPrincipal而不是GroupPrincipal的实例? 我想写一下 MyGroupPrincipal group = GetGroup(); foreach (var m in group.Members) { if (m is MyGroupPrincipal) { // always fails: m is a normal GroupPrincipal // do something } }