2011-07-16 33 views
9

Belirli bir AD grubu için tüm üyeleri alan bir C# 4.0 programı çalışıyorum. Bu AD grubunda diğer üyeleri içeren diğer AD grupları vardır. Programımın bir grup olduğunu ve o gruptaki üyeleri aldığını belirtmek için ihtiyacım var.Active Directory iç içe grup grupları

Yinelemeli bir program yazmam gerektiğini biliyorum, ancak daha önce yapmış olabileceği birisini umuyorum. Değilse, birileri bana üye gerçek bir grup olduğunu belirlemek için AD özellik özniteliğini söyleyebilir?

+0

Bu bağlantı yararlı olabilir: http://en.csharp-online.net/User_Management_with_Active_Directory%E2%80%94Retrieving_tokenGroups_from_ADAM –

cevap

-1

LDAP görünümünü ActiveDirectory olarak kullandığınızı varsayarak, aradığınız öznitelik "objectClass" olarak adlandırılır. Bir grup "groupOfNames" bir objectClass ile ortaya çıkıyor, inanıyorum; muhtemelen "grup". Alternatif olarak, nesnenin nesne sınıfından bağımsız olarak herhangi bir "üye" lere sahip olup olmadığına bakın ve eğer varsa, bunun bir çeşit grup ve tekrarlama olduğunu varsayalım.

13

.NET 3.5 ve üstü konumdayken, System.DirectoryServices.AccountManagement (S.DS.AM) ad alanını gözden geçirmelisiniz.

Temel olarak, etki alanı bağlamını tanımlayabilir ve kolayca AD kullanıcıları ve/veya grupları bulmak: hepsi burada bu konuda okuyun. Ayrıca: GroupPrincipal, o grubun tüm üyelerini listeleyecek olan GetMembers adlı bir yönteme sahiptir - isteğe bağlı olarak, sizin için yinelemeli olarak yapacağız!

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find the group you're interested in 
GroupPrincipal myGroup = GroupPrincipal.FindByIdentity(ctx, "SomeGroup"); 

// if you found it - get its members 
if (myGroup != null) 
{ 
    // if your call the GetMembers, you can optionally specify a "Recursive" flag - done here 
    var allMembers = myGroup.GetMembers(true); 
} 

yeni S.DS.AM

AD kullanıcıların ve grupların uğraşmak gerçekten kolay yapar!

+0

S.DS.AM.'deki ipucu için teşekkür ederiz. Sadece bana tekrarlayan bir program yazma acısını kurtardı !! –

+0

'GetMembers (true)' bir sınırlamaya sahiptir, örn. 'Domain Users' hiç iade edilmez. Onları elde etmek için 'GetMembers (false)' i tekrar tekrar çağırmalısınız. –

+0

@WernfriedDomscheit Diğer sınırlama nedir? –

İlgili konular