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


Функция 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

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

Значение Значение
0
Задает глобальные параметры пароля. Параметр buf указывает на USER_MODALS_INFO_0 структуру.
1
Указывает сведения о сервере входа и контроллере домена. Параметр buf указывает на структуру USER_MODALS_INFO_1 .
2
Указывает доменное имя и идентификатор. Параметр buf указывает на структуру USER_MODALS_INFO_2 .
3
Указывает сведения о блокировке. Параметр buf указывает на USER_MODALS_INFO_3 структуру.
1001
Указывает минимальную допустимую длину пароля. Параметр buf указывает на USER_MODALS_INFO_1001 структуру.
1002
Указывает максимально допустимый срок действия пароля. Параметр buf указывает на структуру USER_MODALS_INFO_1002 .
1003
Указывает минимальный допустимый срок действия пароля. Параметр buf указывает на структуру USER_MODALS_INFO_1003 .
1004
Указывает сведения о принудительном выходе из системы. Параметр buf указывает на структуру USER_MODALS_INFO_1004 .
1005
Указывает длину журнала паролей. Параметр buf указывает на структуру USER_MODALS_INFO_1005 .
1006
Указывает роль сервера входа в систему. Параметр buf указывает на структуру USER_MODALS_INFO_1006 .
1007
Указывает сведения о контроллере домена. Параметр buf указывает на USER_MODALS_INFO_1007 структуру.

[in] buf

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

[out] parm_err

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

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

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

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

Код возврата Описание
ERROR_ACCESS_DENIED
Пользователь не имеет доступа к запрошенной информации.
ERROR_INVALID_PARAMETER
Указанный параметр недопустим. Дополнительные сведения см. в разделе "Примечания".
NERR_InvalidComputer
Недопустимое имя компьютера.
NERR_UserNotFound
Не удалось найти имя пользователя.

Комментарии

При программировании для 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

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

NetUserModalsПолучить

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

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

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_1001

USER_MODALS_INFO_1002

USER_MODALS_INFO_1003

USER_MODALS_INFO_1004

USER_MODALS_INFO_1005

USER_MODALS_INFO_1006

USER_MODALS_INFO_1007

USER_MODALS_INFO_2

USER_MODALS_INFO_3

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