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 ヘッダー ファイルを直接使用しないでください。
次の一覧は、このパラメーターで使用できる値を示しています。
戻り値
関数が成功した場合、戻り値はNERR_Success。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
DNS 名に無効な文字が含まれています。 このエラーは、 指定された NameType パラメーターが NetSetupDnsMachine で、 lpName パラメーターの DNS 名に無効な文字が含まれている場合に返されます。 |
|
DNS 名が RFC 仕様に準拠していません。 このエラーは、 指定された NameType パラメーターが NetSetupDnsMachine で、 lpName パラメーターの DNS 名が RFC 仕様に準拠していない場合に返されます。 |
|
重複する名前がネットワーク上に既に存在します。 |
|
指定したコンピューター名の形式が無効です。 |
|
パラメーターが正しくありません。 このエラーは、 lpName パラメーターが NULL であるか、 NameType パラメーターが NetSetupUnknown または不明な nametype として指定されている場合に返されます。 |
|
指定されたドメインが存在しません。 |
|
要求はサポートされていません。 このエラーは、リモート コンピューターが lpServer パラメーターで指定されていて、この呼び出しがリモート コンピューターでサポートされていない場合に返されます。 |
|
指定したコンピューター名が無効です。 このエラーは、 指定された NameType パラメーターが NetSetupDnsMachine または NetSetupMachine で、指定されたコンピューター名が無効な場合に返されます。 |
|
指定されたワークグループ名が無効です。 このエラーは、 指定された NameType パラメーターが NetSetupWorkgroup で、指定されたワークグループ名が無効な場合に返されます。 |
|
RPC サーバーは使用できません。 このエラーは、リモート コンピューターが lpServer パラメーターで指定されていて、RPC サーバーが使用できない場合に返されます。 |
|
このプロセスでは、リモート呼び出しは許可されません。 このエラーは、 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 |