[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

C# Get Active Directory Members from a Distribution Group

Posted on 2009-04-07
3
Medium Priority
?
2,076 Views
Last Modified: 2012-05-06
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

0
Comment
Question by:GiftsonDJohn
  • 2
3 Comments
 
LVL 53

Expert Comment

by:Dhaest
ID: 24084650
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
 
LVL 14

Author Comment

by:GiftsonDJohn
ID: 24085450
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
 
LVL 14

Accepted Solution

by:
GiftsonDJohn earned 0 total points
ID: 24838138
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Integration Management Part 2
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …

873 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question