共用方式為


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列舉類型的其中一個值。

請注意,Lm.h 頭文件會自動包含 Lmjoin.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。

如果函式失敗,傳回值可以是下列其中一個錯誤碼。

傳回碼 Description
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 參數為 NULLNameType 參數指定為 NetSetupUnknown 或未知的 nametype,則會傳回此錯誤。
ERROR_NO_SUCH_DOMAIN
指定的網域不存在。
ERROR_NOT_SUPPORTED
不支援此要求。 如果在 lpServer 參數中指定遠端電腦,而且遠端電腦上不支援此呼叫,就會傳回此錯誤。
NERR_InvalidComputer
指定的電腦名稱無效。 如果指定的 NameType 參數是 NetSetupDnsMachineNetSetupMachine 且指定的電腦名稱無效,就會傳回此錯誤。
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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 lmjoin.h (包含 Lm.h)
程式庫 Netapi32.lib
Dll Netapi32.dll

另請參閱

目錄服務函式

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

網路管理功能

網路管理概觀