Поделиться через


Функция NetUserModalsGet (lmaccess.h)

Функция NetUserModalsGet извлекает глобальные сведения для всех пользователей и глобальных групп в базе данных безопасности, которая является базой данных диспетчера учетных записей безопасности (SAM) или, в случае контроллеров домена, Active Directory.

Синтаксис

NET_API_STATUS NET_API_FUNCTION NetUserModalsGet(
  [in, optional] LPCWSTR servername,
  [in]           DWORD   level,
  [out]          LPBYTE  *bufptr
);

Параметры

[in, optional] servername

Указатель на константную строку, указывающую DNS или NetBIOS-имя удаленного сервера, на котором выполняется функция. Если этот параметр имеет значение NULL, используется локальный компьютер. Дополнительные сведения см. в разделе "Примечания".

[in] level

Уровень информации запрашиваемых данных. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
0
Возвращает глобальные параметры пароля. Параметр bufptr указывает на USER_MODALS_INFO_0 структуру.
1
Возвращает сведения о сервере входа и контроллере домена. Параметр bufptr указывает на структуру USER_MODALS_INFO_1 .
2
Возвращает доменное имя и идентификатор. Параметр bufptr указывает на структуру USER_MODALS_INFO_2 . Дополнительные сведения см. в разделе "Примечания".
3
Возвращает сведения о блокировке. Параметр bufptr указывает на структуру USER_MODALS_INFO_3 .
 

Вход в сеанс null может вызывать NetUserModalsGet анонимно на уровнях информации 0 и 3.

[out] bufptr

Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level .

Буфер для этих данных выделяется системой, и приложение должно вызвать функцию NetApiBufferFree , чтобы освободить выделенную память, когда возвращаемые данные больше не нужны. Дополнительные сведения см. в разделах Буферы функций управления сетью и Длина буфера функции управления сетью.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет NERR_Success.

Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.

Код возврата Описание
ERROR_ACCESS_DENIED
Пользователь не имеет доступа к запрошенной информации.
ERROR_BAD_NETPATH
Сетевой путь не найден". Эта ошибка возвращается, если не удалось найти параметр servername .
ERROR_INVALID_LEVEL
Неправильный уровень системного вызова. Эта ошибка возвращается, если параметр уровня не является одним из поддерживаемых значений.
ERROR_INVALID_NAME
Неправильный синтаксис имени файла, каталога или метки тома. Эта ошибка возвращается, если неправильный синтаксис параметра servername .
ERROR_WRONG_TARGET_NAME
Имя целевой учетной записи неверно. Эта ошибка возвращается при сбое входа в удаленный параметр servername , работающий в Windows Vista.
NERR_InvalidComputer
Недопустимое имя компьютера.

Комментарии

При программировании для Active Directory вы можете вызвать определенные методы ИНТЕРФЕЙСА службы Active Directory (ADSI), чтобы достичь тех же функций, которые можно достичь, вызывая модальные функции пользователя управления сетью. Дополнительные сведения см. в разделе IADsDomain.

Если вы вызываете эту функцию на контроллере домена под управлением Active Directory, доступ разрешен или запрещен на основе списка управления доступом (ACL) для защищаемого объекта. Список управления доступом по умолчанию позволяет просматривать сведения всем пользователям, прошедшим проверку подлинности, и членам группы "Доступ, совместимый с Windows 2000". Если вы вызываете эту функцию на рядовом сервере или рабочей станции, все пользователи, прошедшие проверку подлинности, смогут просматривать сведения. Сведения об анонимном доступе и ограничении анонимного доступа на этих платформах см. в разделе Требования к безопасности для функций управления сетью. Дополнительные сведения о списках управления доступом, ACE и маркерах доступа см. в разделе модель контроль доступа.

Дескриптор безопасности объекта Domain используется для выполнения проверка доступа для этой функции.

Чтобы получить идентификатор безопасности домена, к которому принадлежит компьютер, вызовите функцию NetUserModalsGet , указав структуру USER_MODALS_INFO_2 и значение NULL в параметре servername . Если компьютер не является членом домена, функция возвращает указатель NULL .

Примеры

В следующем примере кода показано, как получить глобальные сведения для всех пользователей и глобальных групп с помощью вызова функции NetUserModalsGet . В примере вызывается NetUserModalsGet, указывая уровень сведений 0 (USER_MODALS_INFO_0). Если вызов выполнен успешно, образец выводит глобальные сведения о пароле. Наконец, пример кода освобождает память, выделенную для информационного буфера.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 0;
   USER_MODALS_INFO_0 *pBuf = NULL;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   if (argc > 2)
   {
      fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
      exit(1);
   }
   // The server is not the default local computer.
   //
   if (argc == 2)
      pszServerName = (LPTSTR) argv[1];
   //
   // Call the NetUserModalsGet function; specify level 0.
   //
   nStatus = NetUserModalsGet((LPCWSTR) pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds, print the global information.
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         printf("\tMinimum password length:  %d\n", pBuf->usrmod0_min_passwd_len);
         printf("\tMaximum password age (d): %d\n", pBuf->usrmod0_max_passwd_age/86400);
         printf("\tMinimum password age (d): %d\n", pBuf->usrmod0_min_passwd_age/86400);
         printf("\tForced log off time (s):  %d\n", pBuf->usrmod0_force_logoff);
         printf("\tPassword history length:  %d\n", pBuf->usrmod0_password_hist_len);
      }
   }
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   return 0;
}

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header lmaccess.h (включая Lm.h)
Библиотека Netapi32.lib
DLL Netapi32.dll

См. также раздел

NetUserModalsSet

Функции управления сетью

Общие сведения об управлении сетью

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Пользовательские модальные функции