Solved

C# Get Active Directory Members from a Distribution Group

Posted on 2009-04-07
3
1,863 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

734 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