Функция 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
Уровень информации запрашиваемых данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Возвращает глобальные параметры пароля. Параметр bufptr указывает на USER_MODALS_INFO_0 структуру. |
|
Возвращает сведения о сервере входа и контроллере домена. Параметр bufptr указывает на структуру USER_MODALS_INFO_1 . |
|
Возвращает доменное имя и идентификатор. Параметр bufptr указывает на структуру USER_MODALS_INFO_2 . Дополнительные сведения см. в разделе "Примечания". |
|
Возвращает сведения о блокировке. Параметр bufptr указывает на структуру USER_MODALS_INFO_3 . |
Вход в сеанс null может вызывать NetUserModalsGet анонимно на уровнях информации 0 и 3.
[out] bufptr
Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level .
Буфер для этих данных выделяется системой, и приложение должно вызвать функцию NetApiBufferFree , чтобы освободить выделенную память, когда возвращаемые данные больше не нужны. Дополнительные сведения см. в разделах Буферы функций управления сетью и Длина буфера функции управления сетью.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет NERR_Success.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Пользователь не имеет доступа к запрошенной информации. |
|
Сетевой путь не найден". Эта ошибка возвращается, если не удалось найти параметр servername . |
|
Неправильный уровень системного вызова. Эта ошибка возвращается, если параметр уровня не является одним из поддерживаемых значений. |
|
Неправильный синтаксис имени файла, каталога или метки тома. Эта ошибка возвращается, если неправильный синтаксис параметра servername . |
|
Имя целевой учетной записи неверно. Эта ошибка возвращается при сбое входа в удаленный параметр servername , работающий в Windows Vista. |
|
Недопустимое имя компьютера. |
Комментарии
При программировании для 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 |