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"など) またはユーザーのユーザー プリンシパル名 (UPN) をインターネット スタイルのログイン名 ("someone@example.com"など) の形式で指定する必要があります。 このパラメーターが 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 に基づいて名前を検証します。

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 (include Lm.h)
Library Netapi32.lib
[DLL] Netapi32.dll

こちらもご覧ください

ディレクトリ サービス関数

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

ネットワーク管理機能

ネットワーク管理の概要