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

데이터를 지정하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다. 자세한 내용은 네트워크 관리 함수 버퍼를 참조하세요.

[out] parm_err

ERROR_INVALID_PARAMETER 발생시키는 정보 구조의 첫 번째 멤버의 인덱스를 수신하는 값에 대한 포인터입니다. 이 매개 변수가 NULL이면 인덱스가 오류로 반환되지 않습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

함수가 성공하면 반환 값이 NERR_Success.

함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
사용자는 요청한 정보에 대한 액세스 권한이 없습니다.
ERROR_INVALID_PARAMETER
지정한 매개 변수가 잘못되었습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
NERR_InvalidComputer
컴퓨터 이름이 잘못된 경우
NERR_UserNotFound
사용자 이름을 찾을 수 없습니다.

설명

Active Directory를 프로그래밍하는 경우 특정 ADSI(Active Directory Service Interface) 메서드를 호출하여 네트워크 관리 사용자 모달 함수를 호출하여 달성할 수 있는 동일한 기능을 달성할 수 있습니다. 자세한 내용은 IADsDomain을 참조하세요.

Active Directory를 실행하는 도메인 컨트롤러에서 이 함수를 호출하는 경우 보안 개체에 대한 ACL(액세스 제어 목록)에 따라 액세스가 허용되거나 거부됩니다. 기본 ACL은 도메인 관리자 및 계정 운영자만 이 함수를 호출할 수 있도록 허용합니다. 구성원 서버 또는 워크스테이션에서 관리자 및 전원 사용자만 이 함수를 호출할 수 있습니다. 자세한 내용은 네트워크 관리 함수에 대한 보안 요구 사항을 참조하세요. ACL, ACL 및 액세스 토큰에 대한 자세한 내용은 Access Control 모델을 참조하세요.

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
헤더 lmaccess.h(Lm.h 포함)
라이브러리 Netapi32.lib
DLL Netapi32.dll

참고 항목

NetUserModalsGet

네트워크 관리 함수

네트워크 관리 개요

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

사용자 모달 함수