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

ネットワーク管理機能

ネットワーク管理の概要