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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NetUserEnum, Как узнать всех пользователей? 
:(
    Опции темы
NiJazz
  Дата 31.8.2003, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

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



Как с помощью этой функции узнать имена всех польователей?
PM MAIL   Вверх
p0s0l
Дата 31.8.2003, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 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, и забудь про всё...



--------------------
С уважением, г-н Посол.
PM   Вверх
NiJazz
Дата 31.8.2003, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

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



p0s0l, в принципе это всё описано в MSDN. Дело в том, что хотелось бы просто вызовом некой API вывести список всех пользователей, как локальных, так и доменных. И как мне распорядиться полем entriesread, если я в принципе не знаю, сколько юзеров надо вывести? Какое поле является выходным, то есть где именно хранится результат в виде списка пользователей и какого он типа?
И вот ещё. Ведь на низком уровне локальные и доменные пользователи отличаются лишь некой записью? Какая структура это хранит?
PM MAIL   Вверх
p0s0l
Дата 1.9.2003, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата
Какое поле является выходным, то есть где именно хранится результат в виде списка пользователей и какого он типа?

Цитата
bufptr - буфер, куда получишь результат

В этом буфере хранится массив из друг за другом расположенных записей, имеющих тип USER_INFO_0. Их кол-во = entriesread.
Только при выводе отбрасывай ненужных пользователей. Возможно, тебе придется запрашивать информацию не нулевого, а 1, 2 или третьего уровня, чтобы выбрать нужных (скорее всего 1).
Посмотри на структуры USER_INFO_x (x=0,1,2,3)...



--------------------
С уважением, г-н Посол.
PM   Вверх
NiJazz
Дата 1.9.2003, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

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



p0s0l, спасибо за помощь. Но что такое информация n-го уровня? И кто такие ненужные пользователи?
И вот. Если компьютер подключен к сети, то в Windows создаются записи доменных пользователей? Эта функция выводит их тоже?
Дело в том, что надо написать функцию, которая по имеи пользователя и названию домена определяет, к какой стандартной группе он принадлежит. Я так понял, что стандартные группы - это администратор, гость и прочее. Видимо, локальный пользователь - это тот, у кого имя домена - NULL. Имя домена - это имя другого, подключенного к той же сети, компьютера?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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