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 세션 로그온은 정보 수준 0 및 3에서 익명으로 NetUserModalsGet 을 호출할 수 있습니다.
[out] bufptr
데이터를 수신하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다.
이 데이터에 대한 버퍼는 시스템에 의해 할당되며 애플리케이션은 반환된 데이터가 더 이상 필요하지 않을 때 할당된 메모리를 해제하기 위해 NetApiBufferFree 함수를 호출해야 합니다. 자세한 내용은 네트워크 관리 함수 버퍼 및 네트워크관리 함수 버퍼 길이를 참조하세요.
반환 값
함수가 성공하면 반환 값이 NERR_Success.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.
반환 코드 | 설명 |
---|---|
|
사용자는 요청한 정보에 대한 액세스 권한이 없습니다. |
|
네트워크 경로를 찾을 수 없습니다. 서버 이름 매개 변수를 찾을 수 없는 경우 이 오류가 반환됩니다. |
|
시스템 호출 수준이 올바르지 않습니다. 수준 매개 변수가 지원되는 값 중 하나가 아닌 경우 이 오류가 반환됩니다. |
|
파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다. 이 오류는 servername 매개 변수 구문이 올바르지 않으면 반환됩니다. |
|
대상 계정 이름이 잘못되었습니다. 이 오류는 Windows Vista에서 실행되는 원격 서버 이름 매개 변수에 대한 로그온 실패에 대해 반환됩니다. |
|
컴퓨터 이름이 잘못된 경우 |
설명
Active Directory를 프로그래밍하는 경우 특정 ADSI(Active Directory Service Interface) 메서드를 호출하여 네트워크 관리 사용자 모달 함수를 호출하여 달성할 수 있는 동일한 기능을 달성할 수 있습니다. 자세한 내용은 IADsDomain을 참조하세요.
Active Directory를 실행하는 도메인 컨트롤러에서 이 함수를 호출하는 경우 보안 개체에 대한 ACL(액세스 제어 목록)에 따라 액세스가 허용되거나 거부됩니다. 기본 ACL은 "Pre-Windows 2000 호환 액세스" 그룹의 모든 인증된 사용자와 구성원이 정보를 볼 수 있도록 허용합니다. 멤버 서버 또는 워크스테이션에서 이 함수를 호출하는 경우 인증된 모든 사용자가 정보를 볼 수 있습니다. 이러한 플랫폼에서 익명 액세스 및 익명 액세스를 제한하는 방법에 대한 자세한 내용은 네트워크 관리 함수에 대한 보안 요구 사항을 참조하세요. ACL, ACL 및 액세스 토큰에 대한 자세한 내용은 Access Control 모델을 참조하세요.
Domain 개체의 보안 설명자는 이 함수에 대한 액세스 검사 수행하는 데 사용됩니다.
컴퓨터가 속한 도메인의 SID(보안 식별자)를 검색하려면 servername 매개 변수에서 USER_MODALS_INFO_2 구조와 NULL을 지정하는 NetUserModalsGet 함수를 호출합니다. 컴퓨터가 도메인의 멤버가 아닌 경우 함수는 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 |
헤더 | lmaccess.h(Lm.h 포함) |
라이브러리 | Netapi32.lib |
DLL | Netapi32.dll |