powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как получить список всех доменов в локальной сети
11 сообщений из 11, страница 1 из 1
Как получить список всех доменов в локальной сети
    #36998430
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить список всех доменов в локальной сети в виде DC=macronet, DC=ru.
Через
objRoot =GetObject("LDAP://RootDSE");
strDomain=objRoot.Get("DefaultNamingContext");
получаю текущий домен, а как все? WinNT не предлагать.

Спасибо.

--------------------------------------------------------------
Мой первый сайт
сайт developers.do.am
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998464
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак.
И если вы немного подумаете, то лехко осознаете: почему никак.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998467
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему, интересно, я уже догадываюсь что никак, но почему-то же WinNT возвращает список доменов?
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998475
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84А почему, интересно, я уже догадываюсь что никак, но почему-то же WinNT возвращает список доменов?

Патаму, что в WinNT ОБЯЗАТЕЛЬНО есть NetBIOS. Но его могет и не быть в остальных Win.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998514
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84А почему, интересно, я уже догадываюсь что никак, но почему-то же WinNT возвращает список доменов?
С помощью какой функции?
И попробуй WNetEnumResource, но она недостаточно документирована.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998569
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly PodgoretskyРоманыч84А почему, интересно, я уже догадываюсь что никак, но почему-то же WinNT возвращает список доменов?
С помощью какой функции?
И попробуй WNetEnumResource, но она недостаточно документирована.

Даже эльфу 80 уровня не под силу эта задача. А уж он-то (эльф) знает ругательства... тьху... заклинания покрепче.

ЗЫ. Не порите чушь. НИКТО в локальном сегменте без NetBIOS не обладает списком доменов. По определению.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998671
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetBIOS это подсистема LanMan и она доступна даже и без прямого доступа, через NetBIOS over TCP/IP, как правило это не отключают, только серьезно озабоченые безопасностью.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #36998888
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly PodgoretskyРоманыч84А почему, интересно, я уже догадываюсь что никак, но почему-то же WinNT возвращает список доменов?
С помощью какой функции?
И попробуй WNetEnumResource, но она недостаточно документирована.

Мне надо что-нибудь из COM объектов, делаю обзор всех принтеров в сети, но вижу только один домен к которому сам подключен.
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #37000205
Crazy_Driver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84strDomain=objRoot.Get("DefaultNamingContext");


Ну кагбе это и подразумевает получение текущего домена.
Ксате, гугл рулит http://www.script-coding.info/ADSI.html

На шарпе:
Код: plaintext
1.
2.
3.
4.
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password"));

Forest forest = domain.Forest;

DomainCollection domains = forest.Domains;

Стырено с инета
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #37001001
Романыч84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crazy_DriverРоманыч84strDomain=objRoot.Get("DefaultNamingContext");


Ну кагбе это и подразумевает получение текущего домена.
Ксате, гугл рулит http://www.script-coding.info/ADSI.html

На шарпе:
Код: plaintext
1.
2.
3.
4.
Domain domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, "yourDomain", "username", "password"));

Forest forest = domain.Forest;

DomainCollection domains = forest.Domains;

Стырено с инета

Это мое первое знакомство с ADSI, эту страничку я видел. Но WinNT возвращает список доменов не в том виде что мне надо (DC=macronet, DC=ru.)
...
Рейтинг: 0 / 0
Как получить список всех доменов в локальной сети
    #37001136
Crazy_Driver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Романыч84Это мое первое знакомство с ADSI, эту страничку я видел. Но WinNT возвращает список доменов не в том виде что мне надо (DC=macronet, DC=ru.)

Еcли это несвязанные между собой домены, то в желаемом виде не получить никак. Ибо в таком виде их можно получить только через LDAP с контроллера искомого домена, на котором еще надо авторизоваться. Если это домен с поддоменами, то ситуация несколько проще - нужно обращатся к глобальному каталогу. По этому вопросу гугл выдает следующее:

Выведение адрес LDAP от имени домена NT

С учетом стиля учетная запись NT имя (DOMAIN\UserName) это можно сделать вывод, что адрес LDAP для этого домена является тем, что информация о пользователе может посмотрел?

Мой сценарий: у меня есть приложение asp.net, под управлением IIS, который принимает как анонимные и пользователей домена. Анонимные пользователи должны подписать, но пользователи домена проверить сервер заголовки для имени пользователя домена, предоставляемых службами IIS. Мне нужно, чтобы найти некоторую информацию из active directory, как адрес электронной почты и т.д.У меня это работает, если адрес LDAP в файле конфигурации, но предпочел бы не должны поддерживать это значение дополнительных настроек, если я могу избежать его.
Этот вопрос возник из stackoverflow.com
Вопрос по Graham Ambrose
Ответ


Если все домены являются частью того же леса, вы должны быть способны сделать seach глобального каталога (GC: / / вместо LDAP: / /). Вы можете получить только частичное атрибут обратно, но вы можете получить distinguishedName, а затем стандарта LDAP: / / поиск.

Если вы находитесь в ситуации, когда у вас есть разные домены, которые находятся в разных лесах, один простой способ будет построить таблицу подстановки ваших доменных имен NetBIOS. Для каждого леса, вы выполните поиск по поддереву, CN = Partitions, CN = Конфигурация, DC = имя_домена, DC = com с фильтром (netBIOSname = *) и вы получите обратно список доменов в лесу. Атрибут dnsRoot даст вам DNS-имя домена, и вы можете просто использовать, привязка к, или сделать просмотр DNS его и использовать первый адрес, вы получите привязываемого к. Или можно использовать dnsRoot для создания System.DirectoryServices.ActiveDirectory.DirectoryContext к с DirectoryContextType DirectoryServer к вам ссылку на контроллер домена.Или вы можете использовать nCName (дает вам namingContext домена).

Я, вероятно, может помочь, если вы можете предоставить более подробную информацию, или если какие-либо о том, что не ясно.

Дополнительные:

1. Вы можете получить DirectoryEntry, выполнив "Бессерверное связывание", просто указав distinguishedName объекта в каталоге.Например "LDAP: / / CN = Пользователь1, CN = Users, DC = имя_домена, DC = com". Это будет автоматически обнаружить контроллер домена и привязать к нему для получения объекта.
2. Если вы делаете поиск с использованием DirectorySearcher, и не указан объект SearchRoot, он будет автоматически привязываются к корню текущего домена. Вы можете предоставить SearchRoot сузить поиск, но вам не придется.
3. Если вы абсолютно необходимо получить имя текущего домена, можно привязать к объекту, называется RootDSE («LDAP: / / RootDSE ") и получить значение атрибута defaultNamingContext. Это будет возвращать "DC = имя_домена, DC = com" бит.

Честно говоря более общий код, вероятно, не стоит боли если вы уверены, что вы собираетесь нужно, потому что это будет зависеть от структуры доменов и лесов.Например если у вас есть два леса, то есть доверие между ними: вы не будете знать это, до тех пор, пока у вас есть два леса и решение будет зависеть от этого.В agile развития, который избегает меня, но он идет вдоль линии не код, то, что вам не нужно теперь есть содержательные мало Максим.

Вот консольная программа, которая будет выполнять такой поиск:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;

namespace SearchDirectory
{
class Program
{
static void Main(string[] args)
{
string user = @"YOURDOMAIN\yourid";

using (DirectorySearcher ds = new DirectorySearcher())
{
ds.SearchScope = SearchScope.Subtree;
ds.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(sAMAccountName={0}))",
user.Split('\\')[1]);
ds.PageSize = 1000;
using (SearchResultCollection src = ds.FindAll())
{
foreach (SearchResult sr in src)
Console.WriteLine(sr.Properties["distinguishedName"][0].ToString());
}
}

Console.WriteLine("\r\nPress a key to continue...");
Console.ReadKey(true);
}
}
}

Я вырежьте некоторых уголках по этому вопросу, но это должно вам начать работу.Мой совет заключается в том, чтобы получить работу в консоли программы, а затем переместите класса в проекте ASP.NET.Есть много нечетных ошибок, System.DirectoryServices могут бросить вас и с помощью S.DS внутри, ASP.NET может быть весело тоже так что лучше знать ваш код работает до того, как вы оберните его во всех что ASP.NET очарования.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как получить список всех доменов в локальной сети
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]