![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Как с помощью этой функции узнать имена всех польователей?
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
NET_API_STATUS NetUserEnum(
LPWSTR servername, DWORD level, DWORD filter, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle ); servername - имя сервера, на котором ты хочешь узнать юзеров, м.б. == NULL. level - уровень запрашиваемой информации (0, 1, 2, 3, 10, 11, 12). Если просто хочешь узнать имена пользователей, то делай уровень 0. filter - фильтр, читай в описаловке, но лучше ставь 0. bufptr - буфер, куда получишь результат, его не нужно инициализировать, система сама выделит нужный кусок памяти. Когда инфа станет тебе ненужной, делай NetApiBufferFree. prefmaxlen - максимальный размер выделяемой памяти, ставь равным MAX_PREFERRED_LENGTH. entriesread - сколько юзеров тебе поместили в буфер bufptr. totalentries - в общем случае == entriesread resume_handle - перед первым вызовом функции поставь эту переменную = 0, если entriesread < totalentries, то надо продолжать поиск пользователей с помощью этого хэнда. Если prefmaxlen == MAX_PREFERRED_LENGTH, то просто поставь = 0, и забудь про всё... -------------------- С уважением, г-н Посол. |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
p0s0l, в принципе это всё описано в MSDN. Дело в том, что хотелось бы просто вызовом некой API вывести список всех пользователей, как локальных, так и доменных. И как мне распорядиться полем entriesread, если я в принципе не знаю, сколько юзеров надо вывести? Какое поле является выходным, то есть где именно хранится результат в виде списка пользователей и какого он типа?
И вот ещё. Ведь на низком уровне локальные и доменные пользователи отличаются лишь некой записью? Какая структура это хранит? |
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
В этом буфере хранится массив из друг за другом расположенных записей, имеющих тип USER_INFO_0. Их кол-во = entriesread. Только при выводе отбрасывай ненужных пользователей. Возможно, тебе придется запрашивать информацию не нулевого, а 1, 2 или третьего уровня, чтобы выбрать нужных (скорее всего 1). Посмотри на структуры USER_INFO_x (x=0,1,2,3)... -------------------- С уважением, г-н Посол. |
||||
|
|||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
p0s0l, спасибо за помощь. Но что такое информация n-го уровня? И кто такие ненужные пользователи?
И вот. Если компьютер подключен к сети, то в Windows создаются записи доменных пользователей? Эта функция выводит их тоже? Дело в том, что надо написать функцию, которая по имеи пользователя и названию домена определяет, к какой стандартной группе он принадлежит. Я так понял, что стандартные группы - это администратор, гость и прочее. Видимо, локальный пользователь - это тот, у кого имя домена - NULL. Имя домена - это имя другого, подключенного к той же сети, компьютера? |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |