Provides easy access to Active Directory Domain Services. Commonly Used Types: System.DirectoryServices.DirectoryEntry System.DirectoryServices.DirectorySearcher System.DirectoryServices.ActiveDirectory.ActiveDirectorySite System.DirectoryServices.ActiveDirectory.ApplicationPartition System.DirectoryServices.ActiveDirectory.DirectoryContext System.DirectoryServices.ActiveDirectory.DirectoryServer System.DirectoryServices.ActiveDirectory.Domain System.DirectoryServices.ActiveDirectory.DomainController
$ dotnet add package System.DirectoryServicesProvides easy access to Active Directory Domain Services from managed code. Microsoft Active Directory Domain Services are the foundation for distributed networks built on Windows 2000 Server, Windows Server 2003 and Microsoft Windows Server 2008 operating systems that use domain controllers. The namespace contains two component classes, DirectoryEntry and DirectorySearcher, which use the Active Directory Services Interfaces (ADSI) technology. ADSI is the set of interfaces that Microsoft provides as a flexible tool for working with a variety of network providers. ADSI gives the administrator the ability to locate and manage resources on a network with relative ease, regardless of the size of the network.
Active Directory Domain Services use a tree structure. Each node in the tree contains a set of properties. Use this library to traverse, search, and modify the tree, and read and write to the properties of a node.
Install the System.DirectoryServices library from nuget
dotnet add package System.DirectoryServices --version 7.0.1
The sample needs a real path to an Active Directory server to work properly:
using System.DirectoryServices;
namespace TestDirectoryServices
{
internal class Program
{
static void Main(string[] args)
{
DirectoryEntry rootDse = new DirectoryEntry("LDAP://RootDSE");
string configNamingContext = rootDse.Properties["configurationNamingContext"].Value.ToString();
DirectoryEntry certTemplates = new DirectoryEntry("LDAP://CN=Certificate Templates,CN=Public Key Services,CN=Services," + configNamingContext);
DirectorySearcher templatesSearch = new DirectorySearcher(certTemplates, "(objectClass=pKICertificateTemplate)", null, SearchScope.OneLevel);
SearchResultCollection templates = templatesSearch.FindAll();
foreach (SearchResult template in templates)
{
Console.WriteLine($"Name: {template.Properties["name"][0]} ({template.Properties["displayName"][0]})");
Console.WriteLine($"Flags: {template.Properties["msPKI-Enrollment-Flag"][0]}");
}
}
}
}
The main types provided by this library are:
System.DirectoryServices.DirectoryEntrySystem.DirectoryServices.DirectorySearcherSystem.DirectoryServices is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.