Aşağıdaki kod grubunda bana kullanıcıları alır aracılığıyla Active Directory Grubunda kullanıcı adları almak ama ben sadece ad ve soyadı dönmek istiyorum "CN=johnson\,Tom,OU=Users,OU=Main,DC=company,DC=com"
.net
döndürülür. Bunu nasıl başarabilirim? İstediğiniz bir Principal sahip olana kadar group.Members özelliği üzerinden
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "GName");
Arama:
DirectoryEntry ou = new DirectoryEntry();
DirectorySearcher src = new DirectorySearcher();
src.Filter = ("(&(objectClass=group)(CN=Gname))");
SearchResult res = src.FindOne();
if (res != null)
{
DirectoryEntry deGroup = new DirectoryEntry(res.Path);
PropertyCollection pcoll = deGroup.Properties;
foreach (object obj in deGroup.Properties["member"])
{
ListBox1.Items.Add(obj.ToString());
}
}
aşağıdaki gerçekten değil bir cevap, sadece bir uyarı: C# diline çevirmek yeterince kolay olmalı ([DirectorySearcher.FindAll] aramasını http mesela senin DirectoryEntry, DirectorySearcher ve özellikle herhangi SearchResultCollections (wrap : //msdn.microsoft.com/en-us/library/system.directoryservices.directorysearcher.findall.aspx)) bir kullanma deyiminde veya bir/son olarak bir Dispose çağrısı ile deneyin. SearchResultCollections toplanan çöp olamaz. İnterneti bir şey atmadığı bir örneği kullandıktan sonra günlerce bir bellek sızıntısı aldım. Active Directory'de arama yapma ile ilgili hangi sınıfları görmek için MS belgelerini iyice kontrol edin –