Here you go with the method that returns all the group names from AD.
All the best.
string serverName = string.Empty;
GlobalCatalog gcServer = null;
DomainController dc = null;
try
{
dc = DomainController.FindOne(new DirectoryContext(DirectoryContextType.Domain));
serverName = dc.Name;
}
catch (ActiveDirectoryObjectNotFoundException)
{
return;
}
var groups = GetAllGroupNames(serverName);
....
....
private List<string> GetAllGroupNames(string serverName)
{
List<string> groups = new List<string>();
LdapConnection conn=null;
int defaultADPageSize = 500;
int pageCount = 0;
try
{
conn = GetLDAPConnection(serverName);
string[] propertiesToQuery = { "distinguishedname", "objectguid", "member", "memberof", "objectClass" };
SearchRequest request = new SearchRequest(
null,
ActiveDirectoryGroupFilterQuery2,
System.DirectoryServices.Protocols.SearchScope.Subtree,
propertiesToQuery);
PageResultRequestControl requestPageSize = new PageResultRequestControl(defaultADPageSize);
request.Controls.Add(requestPageSize);
while (true)
{
PageResultResponseControl pageResponse = null;
SearchResponse results = (SearchResponse)conn.SendRequest(request);
if (null == results)
{
break;
}
pageCount++;
if (results.Controls.Length != 1 ||
!(results.Controls[0] is PageResultResponseControl))
{
break;
}
pageResponse = (PageResultResponseControl)results.Controls[0];
if (results.Entries.Count > 0)
{
foreach (SearchResultEntry searchResult in results.Entries)
{
SearchResultAttributeCollection attColl = searchResult.Attributes;
groups.Add(attColl["distinguishedname"][0].ToString());
}
if (pageResponse != null && pageResponse.Cookie.Length == 0)
{
break;
}
if (pageResponse != null)
{
requestPageSize.Cookie = pageResponse.Cookie;
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (conn != null)
{
conn.Dispose();
}
}
return groups;
}
private LdapConnection GetLDAPConnection(string server)
{
LdapConnection conn = new LdapConnection(string.Format("{0}:{1}", server, "3268"));
conn.Credential = CredentialCache.DefaultNetworkCredentials;
conn.AuthType = AuthType.Negotiate;
conn.SessionOptions.Sealing = true;
conn.SessionOptions.Signing = true;
conn.Bind();
return conn;
}
</string></string></string>