다음을 통해 공유


NetValidateName 함수(lmjoin.h)

NetValidateName 함수는 이름이 지정된 이름 유형(컴퓨터 이름, 작업 그룹 이름, 도메인 이름 또는 DNS 컴퓨터 이름)에 대해 유효한지 확인합니다.

구문

NET_API_STATUS NET_API_FUNCTION NetValidateName(
  [in] LPCWSTR            lpServer,
  [in] LPCWSTR            lpName,
  [in] LPCWSTR            lpAccount,
  [in] LPCWSTR            lpPassword,
  [in] NETSETUP_NAME_TYPE NameType
);

매개 변수

[in] lpServer

함수를 호출할 컴퓨터의 DNS 또는 NetBIOS 이름을 지정하는 상수 문자열에 대한 포인터입니다. 이 매개 변수가 NULL이면 로컬 컴퓨터가 사용됩니다.

[in] lpName

유효성을 검사할 이름을 지정하는 상수 문자열에 대한 포인터입니다. NameType 매개 변수에 지정된 값에 따라 lpName 매개 변수는 컴퓨터 이름, 작업 그룹 이름, 도메인 이름 또는 DNS 컴퓨터 이름을 가리킬 수 있습니다.

[in] lpAccount

lpName 매개 변수가 도메인 이름인 경우 이 매개 변수는 도메인 컨트롤러에 연결할 때 사용할 계정 이름을 가리킵니다. 문자열은 도메인 NetBIOS 이름 및 사용자 계정(예: "REDMOND\user") 또는 인터넷 스타일 로그인 이름(예: "someone@example.com") 형식으로 사용자의 UPN(사용자 계정 이름)을 지정해야 합니다. 이 매개 변수가 NULL이면 호출자의 컨텍스트가 사용됩니다.

[in] lpPassword

lpAccount 매개 변수가 계정 이름을 지정하는 경우 이 매개 변수는 도메인 컨트롤러에 연결할 때 사용할 암호를 가리킵니다. 그렇지 않으면 이 매개 변수는 NULL이어야 합니다.

[in] NameType

유효성을 검사하기 위해 lpName 매개 변수에 전달된 이름의 형식입니다. 이 매개 변수는 Lmjoin.h 헤더 파일에 정의된 NETSETUP_NAME_TYPE 열거형 형식의 값 중 하나일 수 있습니다.

Lmjoin.h 헤더는 Lm.h 헤더 파일에 자동으로 포함됩니다. Lmjoin.h 헤더 파일을 직접 사용하면 안 됩니다.

다음 목록에서는 이 매개 변수에 사용할 수 있는 값을 보여 주세요.

의미
NetSetupUnknown
0
nametype을 알 수 없습니다. 이 값을 사용하면 NetValidateName 함수가 ERROR_INVALID_PARAMETER 실패합니다.
NetSetupMachine
1
NetBIOS 컴퓨터 이름이 유효하고 사용 중이 아닌지 확인합니다.
NetSetupWorkgroup
2
작업 그룹 이름이 유효한지 확인합니다.
NetSetupDomain
3
도메인 이름이 있고 도메인인지 확인합니다.
NetSetupNonExistentDomain
4
도메인 이름이 사용되고 있지 않은지 확인합니다.
NetSetupDnsMachine
5
DNS 컴퓨터 이름이 유효한지 확인합니다.

이 값은 Windows 2000 이상에서 지원됩니다. 이 값을 사용하려면 애플리케이션을 _WIN32_WINNT >= 0x0500 컴파일해야 합니다.

반환 값

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

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

반환 코드 설명
DNS_ERROR_INVALID_NAME_CHAR
DNS 이름에 잘못된 문자가 포함되어 있습니다. 지정한 NameType 매개 변수가 NetSetupDnsMachine 이고 lpName 매개 변수의 DNS 이름에 잘못된 문자가 포함된 경우 이 오류가 반환됩니다.
DNS_ERROR_NON_RFC_NAME
DNS 이름은 RFC 사양을 준수하지 않습니다. 지정한 NameType 매개 변수가 NetSetupDnsMachine 이고 lpName 매개 변수의 DNS 이름이 RFC 사양을 준수하지 않는 경우 이 오류가 반환됩니다.
ERROR_DUP_NAME
네트워크에 중복된 이름이 이미 있습니다.
ERROR_INVALID_COMPUTERNAME
지정된 컴퓨터 이름의 형식이 잘못되었습니다.
ERROR_INVALID_PARAMETER
매개 변수가 잘못되었습니다. lpName 매개 변수가 NULL이거나 NameType 매개 변수가 NetSetupUnknown 또는 알 수 없는 nametype으로 지정된 경우 이 오류가 반환됩니다.
ERROR_NO_SUCH_DOMAIN
지정된 도메인이 없습니다.
ERROR_NOT_SUPPORTED
요청이 지원되지 않습니다. 이 오류는 원격 컴퓨터가 lpServer 매개 변수에 지정되었고 원격 컴퓨터에서 이 호출이 지원되지 않는 경우 반환됩니다.
NERR_InvalidComputer
지정된 컴퓨터 이름이 잘못되었습니다. 지정한 NameType 매개 변수가 NetSetupDnsMachine 또는 NetSetupMachine 이고 지정된 컴퓨터 이름이 유효하지 않으면 이 오류가 반환됩니다.
NERR_InvalidWorkgroupName
지정된 작업 그룹 이름이 잘못되었습니다. 지정한 NameType 매개 변수가 NetSetupWorkgroup 이고 지정된 작업 그룹 이름이 올바르지 않으면 이 오류가 반환됩니다.
RPC_S_SERVER_UNAVAILABLE
RPC 서버를 사용할 수 없습니다. 원격 컴퓨터가 lpServer 매개 변수에 지정되었고 RPC 서버를 사용할 수 없는 경우 이 오류가 반환됩니다.
RPC_E_REMOTE_DISABLED
이 프로세스에는 원격 호출이 허용되지 않습니다. 이 오류는 원격 컴퓨터가 lpServer 매개 변수에 지정되었고 이 프로세스에 대해 원격 호출이 허용되지 않는 경우 반환됩니다.

설명

NetValidateName 함수는 지정된 이름 유형에 따라 이름의 유효성을 검사합니다.

NameType 매개 변수가 NetSetupMachine인 경우 lpName 매개 변수에 전달된 이름은 NetBIOS 이름으로 구문상 정확해야 하며 현재 네트워크에서 이름을 사용하지 않아야 합니다.

NameType 매개 변수가 NetSetupWorkgroup인 경우 lpName 매개 변수에 전달된 이름은 구문상 올바른 NetBIOS 이름이어야 하며, 이름은 현재 네트워크에서 고유한 이름으로 사용되지 않아야 하며 이름은 컴퓨터 이름과 달라야 합니다.

NameType 매개 변수가 NetSetupDomain인 경우 lpName 매개 변수에 전달된 이름은 NetBIOS 또는 DNS 이름으로 구문적으로 올바르고 이름은 현재 도메인 이름으로 등록되어야 합니다.

NameType 매개 변수가 NetSetupNonExistentDomain인 경우 lpName 매개 변수에 전달된 이름은 NetBIOS 또는 DNS 이름으로 구문적으로 정확해야 하며 이름은 현재 도메인 이름으로 등록되지 않아야 합니다.

NameType 매개 변수가 NetSetupDnsMachine인 경우 lpName 매개 변수에 전달된 이름은 DNS 이름으로 구문적으로 정확해야 합니다.

NetBIOS 이름은 최대 길이 16자로 제한됩니다.

NetValidateName 함수를 성공적으로 실행하려면 특별한 그룹 멤버 자격이 필요하지 않습니다.

예제

다음 예제에서는 특정 형식에 대한 이름의 유효성을 검사합니다.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <windows.h>
#include <lm.h>

int wmain(int argc, wchar_t * argv[])
{

    NET_API_STATUS nStatus;

    LPCWSTR lpServer = NULL;
    LPCWSTR lpName = NULL;
    LPCWSTR lpAccount = NULL;
    LPCWSTR lpPassword = NULL;
    DWORD dwNameType = NetSetupUnknown; // unknown name type

    if (argc != 3 && argc != 4 && argc != 6) {
        wprintf(L"Usage: %ws Server Name AccountName Password> nametype\n",
                argv[0]);
        wprintf(L"Usage: %ws Server Name nametype\n", argv[0]);
        wprintf(L"Usage: %ws Name nametype\n", argv[0]);
        wprintf(L"     %ws Client2 2\n", argv[0]);
        wprintf(L"     %ws Myserver Client2 3\n", argv[0]);
        wprintf(L"     %ws Myserver Client2 domain\\user password 3\n", argv[0]);
        exit(1);
    }
    // The request is not for the primary domain.
    //
    if (argc == 3) {
        lpName = argv[1];
        dwNameType = _wtoi(argv[2]);
    }

    if (argc == 4) {
        lpServer = argv[1];
        lpName = argv[2];
        dwNameType = _wtoi(argv[3]);
    }

    if (argc == 6) {
        lpServer = argv[1];
        lpName = argv[2];
        lpAccount = argv[3];
        lpPassword = argv[4];
        dwNameType = _wtoi(argv[5]);
    }

    wprintf(L"Calling NetValidateName with parameters\n");
    wprintf(L"    lpServer = %ws\n", lpServer);
    wprintf(L"    lpName = %ws\n", lpName);
    wprintf(L"    lpAccount = %ws\n", lpAccount);
    wprintf(L"    lpPassword = %ws\n", lpPassword);
    wprintf(L"    NameType  = %d ", dwNameType);
    switch (dwNameType) {
    case NetSetupUnknown:
        wprintf(L"(NetSetupUnknown)\n");
        break;
    case NetSetupMachine:
        wprintf(L"(NetSetupMachine)\n");
        break;
    case NetSetupWorkgroup:
        wprintf(L"(NetSetupWorkgroup)\n");
        break;
    case NetSetupDomain:
        wprintf(L"(NetSetupDomain)\n");
        break;
    case NetSetupNonExistentDomain:
        wprintf(L"(NetSetupNonExistentDomain)\n");
        break;
#if(_WIN32_WINNT >= 0x0500)
    case NetSetupDnsMachine:
        wprintf(L"(NetSetupDnsMachine)\n");
        break;
#endif
    default:
        wprintf(L"Other unknown nametype)\n");
        break;
    }

    //
    // Call the NetValidateName function to validate the name
    //
    nStatus = NetValidateName(lpServer,
                              lpName, lpAccount, lpPassword, (NETSETUP_NAME_TYPE) dwNameType);
    //
    // If the call succeeds,
    //
    if ((nStatus == NERR_Success)) {
        wprintf(L"NetValidateName was successful\n", nStatus);
    } else {
        wprintf(L"NetValidateName failed with error: %lu (0x%lx)\n", nStatus,
                nStatus);
        wprintf(L"   Error = ");
        switch (nStatus) {
        case ERROR_INVALID_PARAMETER:
            wprintf(L"ERROR_INVALID_PARAMETER\n");
            break;
        case ERROR_DUP_NAME:
            wprintf(L"ERROR_DUP_NAME\n");
            break;
        case ERROR_NO_SUCH_DOMAIN:
            wprintf(L"ERROR_NO_SUCH_DOMAIN\n");
            break;
        case ERROR_NOT_SUPPORTED:
            wprintf(L"ERROR_NOT_SUPPORTED\n");
            break;
        case ERROR_INVALID_COMPUTERNAME:
            wprintf(L"ERROR_INVALID_COMPUTERNAME\n");
            break;
        case DNS_ERROR_INVALID_NAME_CHAR:
            wprintf(L"DNS_ERROR_INVALID_NAME_CHAR\n");
            break;
        case DNS_ERROR_NON_RFC_NAME:
            wprintf(L"DNS_ERROR_NON_RFC_NAME\n");
            break;
        case NERR_InvalidComputer:
            wprintf(L"NERR_InvalidComputer\n");
            break;
        case NERR_InvalidWorkgroupName:
            wprintf(L"NERR_InvalidWorkgroupName\n");
            break;
        case RPC_S_SERVER_UNAVAILABLE:
            wprintf(L"RPC_S_SERVER_UNAVAILABLE\n");
            break;
        case RPC_E_REMOTE_DISABLED:
            wprintf(L"RPC_E_REMOTE_DISABLED\n");
            break;
        default:
            wprintf(L"Other error, see Winerror.h or lmerr.h)\n");
            break;
        }
    }

    return nStatus;
}


요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 lmjoin.h(Lm.h 포함)
라이브러리 Netapi32.lib
DLL Netapi32.dll

추가 정보

디렉터리 서비스 함수

NetGetJoinInformation

NetGetJoinableOU

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

네트워크 관리 함수

네트워크 관리 개요