C# Get Active Directory Members from a Distribution Group

Hi,

I am trying to retrieve all the members from Active Directory using C# AD services.

I am able to retrieve all the members from the top level group. In our organisation they have defined some of Group Names start with * symbol. I am not able to locate the AD Group directly using the distinguishedName property.

This problem I am facing only if such group is added into some other group. for ex.

Group1 //(Main Group) I am able to locate the group
     Member1 //(Members) I am able to retrieve the members
     Member2
     Member3
    Group11 //(Sub Group) I am able to locate the group.
    *Group12 //(Sub Group with * symbol) I am unable to locate the group.

I need some help on this.
DirectoryEntry gc;
DirectoryEntry searchRoot = null;
DirectorySearcher searcher;
SearchResultCollection result;
 
// Get the directoryentry of the Global Catalog root
gc = new DirectoryEntry("GC:");
 
foreach (DirectoryEntry child in gc.Children)
{
          searchRoot = child;
}
 
searcher = new DirectorySearcher(searchRoot, string.Format("(&(|(objectCategory=person)(objectCategory=group))(sAMAccountName={0}))", searchName), new string[] { "distinguishedName", "mail", "sAMAccountName" }, SearchScope.Subtree);
                
SearchResult searchResult = searcher.FindOne();
 
if (searchResult != null)
{
        DirectoryEntry entry = new DirectoryEntry(searchResult.Path);
 
         if (IsGroup(GetValue(entry, "objectCategory")))
         {
                 IterateGroup(entry, searchRoot);
         }
         else
         {
               textBox2.AppendText(GetValue(entry, "GivenName") + " " + GetValue(entry, "SN"));
               textBox2.AppendText(Environment.NewLine);
         }
}
else
         textBox2.AppendText("User/Group not found in Active Directory");
 
 
private void IterateGroup(DirectoryEntry groupentry, DirectoryEntry searchRoot)
        {
            foreach (object member in groupentry.Properties["member"])
            {
                DirectorySearcher searcher = new DirectorySearcher(searchRoot, string.Format("(&(|(objectCategory=person)(objectCategory=group))(distinguishedName={0}))", member), new string[] { "distinguishedName", "mail", "sAMAccountName" }, SearchScope.Subtree);
 
                SearchResult searchResult = searcher.FindOne();
 
                if (searchResult != null)
                {
                    DirectoryEntry entry = searchResult.GetDirectoryEntry();
 
                    if (IsGroup(GetValue(entry, "objectCategory")))
                    {
                        IterateGroup(entry, searchRoot);
                    }
                    else
                    {
                        textBox2.AppendText(GetValue(entry, "GivenName") + " " + GetValue(entry, "SN"));
                        textBox2.AppendText(Environment.NewLine);
                    }
                }
            }
        }

Open in new window

LVL 14
GiftsonDJohnAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
GiftsonDJohnConnect With a Mentor Author Commented:
0
 
DhaestCommented:
This is perhaps not the answer you want, but it can be a usefull resource for you.
Howto: (Almost) Everything In Active Directory via C#
http://www.codeproject.com/KB/system/everythingInAD.aspx
0
 
GiftsonDJohnAuthor Commented:
Hi Dhaest,

Thanks for your reply. I know about it. I am able to retrieve all the members of the group. I am not able to get only when the name of the group starts like *GroupName. I need assistance to overcome this.
0
All Courses

From novice to tech pro — start learning today.