Есть ли способ найти Active Directory в сети без предоставления какой-либо информации на C #?

#c# #c#-4.0 #active-directory

#c# #c #-4.0 #active-directory

Вопрос:

Я ищу способ найти Active Directory в сети (возможно, через назначенные настройки DNS / DHCP), а затем пытаюсь получить к нему доступ, получая все такие вещи, как имя сервера AD, BaseDN или доменное имя из кода, не запрашивая у пользователя информацию о его сети. Есть ли способ?

     private  string strADServerName = "SERVERAD";
    private  string strBaseDN = "DC=DOMAIN,DC=COM";
    private  string strAccountFilter = "sAMAccountName";
    private  string domainName = "DOMAIN";
  

Ответ №1:

При установке Active Directory вам нужен динамический DNS (DDNS). Во время своей установки AD регистрирует информацию в DNS, как вы можете видеть на следующем снимке. На данном компьютере с Windows класс WMI win32_ComputerSystem может предоставить вам доменное имя.

введите описание изображения здесь

Вы можете посмотреть здесь в разделе подробная _ldap запись :

введите описание изображения здесь

В этой SRV записи указаны DNS-адрес и порт контроллеров домена вашего домена. _ldap запись может иметь несколько значений, поскольку в вашем домене установлено несколько контроллеров домена.

Используя NSLOOKUP.EXE инструмент, вы можете получить эту информацию, как показано здесь, в разделе :

 > set type=SRV
> _ldap._tcp.dom.fr
Serveur :   UnKnown
Address:  192.168.183.100

_ldap._tcp.dom.fr       SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = wm2008r2ent.dom.fr
wm2008r2ent.dom.fr      internet address = 192.168.183.100
  

Если вы не знаете домен, вы можете просто запросить _ldap._tcp как в примере выше :

 > _ldap._tcp
Serveur :   UnKnown
Address:  192.168.183.100

_ldap._tcp.dom.fr       SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = wm2008r2ent.dom.fr
wm2008r2ent.dom.fr      internet address = 192.168.183.100
  

С точки зрения C #, я не уверен, что класс System.Net.DNS позволяет вам запрашивать записи SRV. Вы можете найти в этой записи codeplex, что сборка DnDNS, похоже, делает это.

Комментарии:

1. Я знаю о методе nslookup .. хотя вам все равно придется вводить _ldap._tcp.dom.fr не так ли? итак, вы должны знать, что ищете?

2. Win32_ComputerSystem может предоставить вам «dom.fr «часть.

3. Будет ли он предоставлять это и на компьютере вне домена?

4. Конечно, нет. Что вы действительно хотите сделать? обнаружить AD в сети с нуля?

5. Ну да. У меня есть компьютер, который не находится в домене, но мне нужно, чтобы он мог обнаруживать Active Directory, когда он подключен к сети. Чтобы в программе, которую я буду писать, мне не нужно было вводить имя домена и так далее, Но я мог бы просто выбрать его из меню выбора, а программа сделала бы все остальное. Учитывая, что DHCP проверяет DNS, который также является Active Directory, это должно быть выполнимо.