Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a list of all domains?

I'm trying to get all domains that are available in the Windows Login dialog (in the Domain dropdown).

I've tried the following code but it only returns the domain I am logged into. Am I missing something?

StringCollection domainList = new StringCollection();
try
{
    DirectoryEntry en = new DirectoryEntry();
    // Search for objectCategory type "Domain"
    DirectorySearcher srch = new DirectorySearcher(en, "objectCategory=Domain");
    SearchResultCollection coll = srch.FindAll();
    // Enumerate over each returned domain.
    foreach (SearchResult rs in coll)
    {
        ResultPropertyCollection resultPropColl = rs.Properties;
        foreach( object domainName in resultPropColl["name"])
        {
            domainList.Add(domainName.ToString());
        }
    }
}
catch (Exception ex)
{
    Trace.Write(ex.Message);
}
return domainList;
like image 608
AngryHacker Avatar asked Apr 07 '10 22:04

AngryHacker


2 Answers

Add a reference to System.DirectoryServices.dll

using (var forest = Forest.GetCurrentForest())
{
    foreach (Domain domain in forest.Domains)
    {
        Debug.WriteLine(domain.Name);
        domain.Dispose();
    }
}
like image 73
Simon Avatar answered Oct 07 '22 03:10

Simon


Take a look at this CodeProject article. You'll find a simple code snippet to enumerate domains in the current forest.

like image 30
Phileosophos Avatar answered Oct 07 '22 04:10

Phileosophos