Функция NetUserModalsSet (lmaccess.h)
Функция NetUserModalsSet задает глобальные сведения для всех пользователей и глобальных групп в базе данных безопасности, которая является базой данных диспетчера учетных записей безопасности (SAM) или, в случае контроллеров домена, Active Directory.
Синтаксис
NET_API_STATUS NET_API_FUNCTION NetUserModalsSet(
[in] LPCWSTR servername,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
Параметры
[in] servername
Указатель на строку константы, указывающую DNS или NetBIOS-имя удаленного сервера, на котором выполняется функция. Если этот параметр имеет значение NULL, используется локальный компьютер.
[in] level
Задает уровень информации данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Задает глобальные параметры пароля. Параметр buf указывает на USER_MODALS_INFO_0 структуру. |
|
Указывает сведения о сервере входа и контроллере домена. Параметр buf указывает на структуру USER_MODALS_INFO_1 . |
|
Указывает доменное имя и идентификатор. Параметр buf указывает на структуру USER_MODALS_INFO_2 . |
|
Указывает сведения о блокировке. Параметр buf указывает на USER_MODALS_INFO_3 структуру. |
|
Указывает минимальную допустимую длину пароля. Параметр buf указывает на USER_MODALS_INFO_1001 структуру. |
|
Указывает максимально допустимый срок действия пароля. Параметр buf указывает на структуру USER_MODALS_INFO_1002 . |
|
Указывает минимальный допустимый срок действия пароля. Параметр buf указывает на структуру USER_MODALS_INFO_1003 . |
|
Указывает сведения о принудительном выходе из системы. Параметр buf указывает на структуру USER_MODALS_INFO_1004 . |
|
Указывает длину журнала паролей. Параметр buf указывает на структуру USER_MODALS_INFO_1005 . |
|
Указывает роль сервера входа в систему. Параметр buf указывает на структуру USER_MODALS_INFO_1006 . |
|
Указывает сведения о контроллере домена. Параметр buf указывает на USER_MODALS_INFO_1007 структуру. |
[in] buf
Указатель на буфер, указывающий данные. Формат этих данных зависит от значения параметра level . Дополнительные сведения см. в разделе Буферы функций управления сетью.
[out] parm_err
Указатель на значение, которое получает индекс первого члена информационной структуры, вызывающей ERROR_INVALID_PARAMETER. Если этот параметр имеет значение NULL, индекс не возвращается при ошибке. Дополнительные сведения см. в разделе "Примечания".
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет NERR_Success.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Пользователь не имеет доступа к запрошенной информации. |
|
Указанный параметр недопустим. Дополнительные сведения см. в разделе "Примечания". |
|
Недопустимое имя компьютера. |
|
Не удалось найти имя пользователя. |
Комментарии
При программировании для Active Directory вы можете вызвать определенные методы ИНТЕРФЕЙСА службы Active Directory (ADSI), чтобы достичь тех же функций, которые можно достичь, вызывая модальные функции пользователя управления сетью. Дополнительные сведения см. в разделе IADsDomain.
Если вы вызываете эту функцию на контроллере домена под управлением Active Directory, доступ разрешен или запрещен на основе списка управления доступом (ACL) для защищаемого объекта. Список управления доступом по умолчанию разрешает вызывать эту функцию только администраторам домена и операторам учетных записей. На рядовом сервере или рабочей станции эту функцию могут вызывать только администраторы и опытные пользователи. Дополнительные сведения см. в разделе Требования к безопасности для функций управления сетями. Дополнительные сведения о списках управления доступом, ACE и маркерах доступа см. в разделе модель контроль доступа.
Дескриптор безопасности объекта Domain используется для выполнения проверка доступа для этой функции. Как правило, вызывающие объекты должны иметь доступ на запись ко всему объекту для успешного вызова этой функции.
Если функция NetUserModalsSet возвращает ERROR_INVALID_PARAMETER, можно использовать параметр parm_err , чтобы указать первый недопустимый элемент информационной структуры. (Структура информации начинается с USER_MODALS_INFO_ и ее формат задается параметром level .) В следующей таблице перечислены значения, которые могут быть возвращены в параметре parm_err и соответствующем элементе структуры с ошибкой. (Префикс usrmod*_ указывает, что элемент может начинаться с нескольких префиксов, например usrmod2_ или usrmod1002_.)
Значение | Член |
---|---|
MODALS_MIN_PASSWD_LEN_PARMNUM | usrmod*_min_passwd_len |
MODALS_MAX_PASSWD_AGE_PARMNUM | usrmod*_max_passwd_age |
MODALS_MIN_PASSWD_AGE_PARMNUM | usrmod*_min_passwd_age |
MODALS_FORCE_LOGOFF_PARMNUM | usrmod*_force_logoff |
MODALS_PASSWD_HIST_LEN_PARMNUM | usrmod*_password_hist_len |
MODALS_ROLE_PARMNUM | usrmod*_role |
MODALS_PRIMARY_PARMNUM | usrmod*_primary |
MODALS_DOMAIN_NAME_PARMNUM | usrmod*_domain_name |
MODALS_DOMAIN_ID_PARMNUM | usrmod*_domain_id |
MODALS_LOCKOUT_DURATION_PARMNUM | usrmod*_lockout_duration |
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM | usrmod*_lockout_observation_window |
MODALS_LOCKOUT_THRESHOLD_PARMNUM | usrmod*_lockout_threshold |
Примеры
В следующем примере кода показано, как задать глобальные сведения для всех пользователей и глобальных групп с помощью вызова функции NetUserModalsSet . Пример заполняет элементы структуры USER_MODALS_INFO_0 и вызывает NetUserModalsSet, указывая уровень информации 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 ui;
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];
//
// Fill in the USER_MODALS_INFO_0 structure.
//
ui.usrmod0_min_passwd_len = 0;
ui.usrmod0_max_passwd_age = (86400 * 30);
ui.usrmod0_min_passwd_age = 0;
ui.usrmod0_force_logoff = TIMEQ_FOREVER; // never force logoff
ui.usrmod0_password_hist_len = 0;
//
// Call the NetUserModalsSet function; specify level 0.
//
nStatus = NetUserModalsSet((LPCWSTR) pszServerName,
dwLevel,
(LPBYTE)&ui,
NULL);
//
// If the call succeeds, inform the user.
//
if (nStatus == NERR_Success)
fwprintf(stderr, L"Modals information set successfully on %s\n", argv[1]);
//
// Otherwise, print the system error.
//
else
fprintf(stderr, "A system error has occurred: %d\n", nStatus);
return 0;
}
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | lmaccess.h (включая Lm.h) |
Библиотека | Netapi32.lib |
DLL | Netapi32.dll |