Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 37-03-NetUserEnum

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
1.57 Кб
Скачать
#include <stdio.h>
#include <windows.h> 
#include <lm.h>

#pragma comment( lib, "netapi32.lib" ) // подключаем сетевую библиотеку

int main()
{
  wchar_t server_name[256] = L"\\\\";  // имя сервера
  USER_INFO_0  *ui;        // информация о пользователе
  DWORD  entries_read;     // количество прочитанных пользователей
  DWORD  total_entries;    // общее количество пользователей

  NET_API_STATUS  ret_status;  // код возврата из функции

  printf("Input server name: ");   // читаем имя сервера
  // формируем имя сервера
  wscanf(L"%s", server_name + wcslen(server_name));

  // получаем информацию о пользователях
  ret_status = NetUserEnum(
    server_name,       // имя сервера
    0,                 // узнаем только имена пользователей
    FILTER_NORMAL_ACCOUNT,   // перечисляем пользователей, зарегистрированных на компьютере
    (LPBYTE*)&ui,      // адрес информации о пользователях
    MAX_PREFERRED_LENGTH,    // перечисляем всех пользователей
    &entries_read,     // количество прочитанных пользователей
    &total_entries,    // общее количество пользователей
    NULL);             // индексации нет

  // проверяем на успешное завершение
  if (ret_status != NERR_Success)
  {
    printf("Net user get info failed.\n");
    printf("Net API Status: %d\n", ret_status);
    NetApiBufferFree(ui);    // освобождаем буфер

    return ret_status;
  }

  for (DWORD i = 0; i < entries_read; ++i)
    wprintf(L"User name: %s\n", ui[i].usri0_name);

  NetApiBufferFree(ui);      // освобождаем буфер

  return 0;
}
Соседние файлы в папке Листинги