Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имена компьютеров в домене. WMI 
:(
    Опции темы
Kolovorot
Дата 15.7.2010, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



Как можно получить имена всех компьютеров находящихся в домене(Если возможно подключенных и неподключеных в момент запроса)?(Код C#).
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
larinva
Дата 15.7.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 24.7.2006

Репутация: нет
Всего: 1



Можно так
Код

                SelectQuery query = new SelectQuery("Win32_ComputerSystem");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

                foreach (ManagementObject mo in searcher.Get())
                {
                    TreeNode tn = new TreeNode(mo["domain"] as string);
                    treeViewNetwork.Nodes.Add(tn);
                    GetNetwork(tn);
                }

PM MAIL   Вверх
Kolovorot
Дата 15.7.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: нет
Всего: 3



А можно посмотреть как работает метод GetNetwork smile 
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
mihryak
Дата 15.7.2010, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



вот тебе сгенерённый метод
Код

                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\directory\\LDAP", 
                    "SELECT * FROM ds_computer"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("DS_name: {0}", queryObj["DS_name"]);
                }

и через AD то же самое
Код

            using (Domain domain = Domain.GetCurrentDomain())
            using (DirectoryEntry domainEntry = domain.GetDirectoryEntry())
            using (DirectorySearcher searcher = new DirectorySearcher(domainEntry, "objectClass=computer", new [] {"Name"}))
            using (SearchResultCollection resultCollection = searcher.FindAll())
            {
                foreach (SearchResult searchResult in resultCollection)
                {
                    Console.WriteLine(searchResult.Properties["Name"][0]);
                }
            }

а вообще, очень не круто создавать одинаковые темы в разных разделах, да ещё и с немного разными условиями
прибил бы ты одну из них
PM MAIL ICQ   Вверх
larinva
Дата 19.7.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 24.7.2006

Репутация: нет
Всего: 1



код GetNetwork
Код

public void GetNetwork(TreeNode node)
        {
            node.Nodes.Clear();

            ArrayList list = ServerEnumClass.GetServerList(ServerEnumClass.SV_101_TYPES.SV_TYPE_WORKSTATION);
            try
            {
                foreach (string name in list)
                {
                    IPAddress[] ipaddr = Dns.GetHostAddresses(name);
                    DirectoryEntry entryPC = new DirectoryEntry("WinNT:");
                    TreeNode dir = new TreeNode(name);
                    foreach (IPAddress s in ipaddr)
                    {
                        dir.Nodes.Add(new TreeNode(s.ToString()));
                        //node.Nodes.Add(dir);
                    }
                    treeViewNetwork.Nodes.Add(dir);
                }
            }
                catch (Exception)
                {
                }
        }



Это сообщение отредактировал(а) larinva - 19.7.2010, 19:16
PM MAIL   Вверх
VirusUZ
  Дата 20.7.2010, 09:13 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 9.4.2010
Где: Узбекистан, Навои й обл.

Репутация: -1
Всего: -2



Супер Утилит

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Remote_Proccess.rar 34,67 Kb
--------------------
Virus
PM MAIL   Вверх
mihryak
Дата 20.7.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



 smile 
чем дальше, тем больше мне кажется, что ты развлекаешься крайне специфичным образом
то StringReader всюду пихаешь, где он нафиг не нужен, теперь вот выкладываешь какую-то муть, выдающую процессы на указанной машине, вместо перечисления этих машин
PM MAIL ICQ   Вверх
Compositum
Дата 12.11.2015, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(mihryak @ 15.7.2010,  18:28)
вот тебе сгенерённый метод
Код

                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\directory\\LDAP", 
                    "SELECT * FROM ds_computer"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("DS_name: {0}", queryObj["DS_name"]);
                }

и через AD то же самое
Код

            using (Domain domain = Domain.GetCurrentDomain())
            using (DirectoryEntry domainEntry = domain.GetDirectoryEntry())
            using (DirectorySearcher searcher = new DirectorySearcher(domainEntry, "objectClass=computer", new [] {"Name"}))
            using (SearchResultCollection resultCollection = searcher.FindAll())
            {
                foreach (SearchResult searchResult in resultCollection)
                {
                    Console.WriteLine(searchResult.Properties["Name"][0]);
                }
            }

а вообще, очень не круто создавать одинаковые темы в разных разделах, да ещё и с немного разными условиями
прибил бы ты одну из них

Благодарю за информацию, оба способа у меня работают (правда второй существенно быстрее первого). А можно ли помимо имени компьютера дополнительно сразу извлекать такую информацию как его SID, а так же информацию о его текущем состоянии (включен или выключен)?

Спасибо!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.