C#检查Active Directory域控制器是否已启动并运行的方法

时间:2016-10-07 15:31:01

标签: c# active-directory

我希望增强我编写的C#程序,以便它可以利用全局编录DC列表中的任何一个,如果其中一个或多个脱机。我想编写一个返回bool值的方法,具体取决于ADDS是否在目标服务器上运行(而不仅仅是服务器是否可ping):

public bool DC_is_Alive(string DomainControllerFQDN) 
{
...
}

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法之一:

予。在服务器上创建DirectoryEntry到RootDSE分区,捕获COMException并检查错误代码

using (var entry = new DirectoryEntry("LDAP://serverFqdn/RootDSE")
{
    entry.RefreshCache()
}

II。创建LdapConnection到服务器,调用Bind方法,捕获LdapException并检查错误代码

using (var connection = new LdapConnection...)
{
    connection.Bind()
}

III。调用DomainController.GetDomainController方法,并捕获ActiveDirectoryObjectNotFoundException

var dc = DomainController.GetDomainController(new DirectoryContext...

P上。 S.根据我的经验,DomainController.GetDomainController可能会挂起,因此整个程序停止响应(它发生在1000 AD的1个AD环境中)。创建了一个方法版本,它异步调用DomainController.GetDomainController并在挂起时抛出TimeoutException