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

Поиск:

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


Бывалый
*


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

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



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


Опытный
**


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

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



Код

    class Program
    {
        static void Main()
        {
            Console.WriteLine(string.Join("; ", GetComputers("Domain").ToArray()));
        }

        private static List<string> GetComputers(string domain)
        {
            List<string> result = new List<string>();

            IntPtr buffer = IntPtr.Zero;
            int size = Marshal.SizeOf(typeof(_SERVER_INFO_100));

            try
            {
                int totalEntries;
                int entriesRead;
                int handle;
                int ret = NetServerEnum(null, 100, ref buffer, -1, out entriesRead,
                    out totalEntries, SV_TYPE__NT, domain, out handle);

                if (ret == NERR_Success)
                {
                    for (int i = 0; i < totalEntries; i++)
                    {
                        IntPtr tmpBuffer = new IntPtr((int)buffer + (i * size));
                        _SERVER_INFO_100 svrInfo = (_SERVER_INFO_100)
                            Marshal.PtrToStructure(tmpBuffer, typeof(_SERVER_INFO_100));
                        result.Add(svrInfo.sv100_name);
                    }
                }
            }
            finally
            {
                NetApiBufferFree(buffer);
            }

            return result;
        }

        [DllImport("Netapi32", CharSet = CharSet.Auto, SetLastError = true), SuppressUnmanagedCodeSecurity]
        private static extern int NetServerEnum(string ServerName, int dwLevel, ref IntPtr pBuf, int dwPrefMaxLen,
            out int dwEntriesRead, out int dwTotalEntries, int dwServerType, string domain, // null for current domain
            out int dwResumeHandle);

        [DllImport("Netapi32", SetLastError = true), SuppressUnmanagedCodeSecurity]
        private static extern int NetApiBufferFree(IntPtr pBuf);

        [StructLayout(LayoutKind.Sequential)]
        private struct _SERVER_INFO_100
        {
            internal int sv100_platform_id;
            [MarshalAs(UnmanagedType.LPWStr)]
            internal string sv100_name;
        }

        private const int SV_TYPE__NT = 0x00001000;
        private const int NERR_Success = 0;
    }

PM MAIL ICQ   Вверх
VirusUZ
  Дата 20.7.2010, 09:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



--------------------
Virus
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




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


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

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