Freigeben über


NetValidateName-Funktion (lmjoin.h)

Die NetValidateName-Funktion überprüft, ob ein Name für den angegebenen Namenstyp (Computername, Arbeitsgruppenname, Domänenname oder DNS-Computername) gültig ist.

Syntax

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

Parameter

[in] lpServer

Ein Zeiger auf eine konstante Zeichenfolge, die den DNS- oder NetBIOS-Namen des Computers angibt, auf dem die Funktion aufgerufen werden soll. Wenn dieser Parameter NULL ist, wird der lokale Computer verwendet.

[in] lpName

Ein Zeiger auf eine konstante Zeichenfolge, die den zu überprüfenden Namen angibt. Abhängig vom im Parameter NameType angegebenen Wert kann der parameter lpName auf einen Computernamen, einen Arbeitsgruppennamen, einen Domänennamen oder einen DNS-Computernamen verweisen.

[in] lpAccount

Wenn der parameter lpName ein Domänenname ist, verweist dieser Parameter auf einen Kontonamen, der beim Herstellen einer Verbindung mit dem Domänencontroller verwendet werden soll. Die Zeichenfolge muss entweder einen NetBIOS-Domänennamen und ein Benutzerkonto (z. B. "REDMOND\user") oder den Benutzerprinzipalnamen (UPN) des Benutzers in Form eines Anmeldenamens im Internetformat (z. B. "someone@example.com") angeben. Wenn dieser Parameter NULL ist, wird der Kontext des Aufrufers verwendet.

[in] lpPassword

Wenn der parameter lpAccount einen Kontonamen angibt, muss dieser Parameter auf das Kennwort verweisen, das beim Herstellen einer Verbindung mit dem Domänencontroller verwendet werden soll. Andernfalls muss dieser Parameter NULL sein.

[in] NameType

Der Typ des Namens, der im lpName-Parameter übergeben wird, um zu überprüfen. Dieser Parameter kann einer der Werte aus dem NETSETUP_NAME_TYPE Enumerationstyp sein, der in der Lmjoin.h-Headerdatei definiert ist.

Beachten Sie, dass der Lmjoin.h-Header automatisch von der Lm.h-Headerdatei eingeschlossen wird. Die Lmjoin.h-Headerdateien sollten nicht direkt verwendet werden.

Die folgende Liste zeigt die möglichen Werte für diesen Parameter.

Wert Bedeutung
NetSetupUnknown
0
Der Namenstyp ist unbekannt. Wenn dieser Wert verwendet wird, schlägt die NetValidateName-Funktion mit ERROR_INVALID_PARAMETER fehl.
NetSetupMachine
1
Überprüfen Sie, ob der NetBIOS-Computername gültig ist und nicht verwendet wird.
NetSetupWorkgroup
2
Überprüfen Sie, ob der Arbeitsgruppenname gültig ist.
NetSetupDomain
3
Vergewissern Sie sich, dass der Domänenname vorhanden ist und dass es sich um eine Domäne handelt.
NetSetupNonExistentDomain
4
Stellen Sie sicher, dass der Domänenname nicht verwendet wird.
NetSetupDnsMachine
5
Überprüfen Sie, ob der DNS-Computername gültig ist.

Dieser Wert wird unter Windows 2000 und höher unterstützt. Die Anwendung muss mit _WIN32_WINNT >= 0x0500 kompiliert werden, um diesen Wert verwenden zu können.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.

Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Fehlercodes sein.

Rückgabecode Beschreibung
DNS_ERROR_INVALID_NAME_CHAR
Der DNS-Name enthält ein ungültiges Zeichen. Dieser Fehler wird zurückgegeben, wenn der angegebene NameType-ParameterNetSetupDnsMachine ist und der DNS-Name im lpName-Parameter ein ungültiges Zeichen enthält.
DNS_ERROR_NON_RFC_NAME
Der DNS-Name entspricht nicht den RFC-Spezifikationen. Dieser Fehler wird zurückgegeben, wenn der angegebene NameType-ParameterNetSetupDnsMachine ist und der DNS-Name im lpName-Parameter nicht den RFC-Spezifikationen entspricht.
ERROR_DUP_NAME
Im Netzwerk ist bereits ein doppelter Name vorhanden.
ERROR_INVALID_COMPUTERNAME
Das Format des angegebenen Computernamens ist ungültig.
ERROR_INVALID_PARAMETER
Ein Parameter ist falsch. Dieser Fehler wird zurückgegeben, wenn der lpName-ParameterNULL ist oder der NameType-Parameter als NetSetupUnknown oder ein unbekannter Namenstyp angegeben ist.
ERROR_NO_SUCH_DOMAIN
Die angegebene Domäne ist nicht vorhanden.
ERROR_NOT_SUPPORTED
Die Anforderung wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn ein Remotecomputer im lpServer-Parameter angegeben wurde und dieser Aufruf auf dem Remotecomputer nicht unterstützt wird.
NERR_InvalidComputer
Der angegebene Computername ist ungültig. Dieser Fehler wird zurückgegeben, wenn der angegebene NameType-ParameterNetSetupDnsMachine oder NetSetupMachine lautet und der angegebene Computername ungültig ist.
NERR_InvalidWorkgroupName
Der angegebene Arbeitsgruppenname ist ungültig. Dieser Fehler wird zurückgegeben, wenn der angegebene NameType-ParameterNetSetupWorkgroup ist und der angegebene Arbeitsgruppenname ungültig ist.
RPC_S_SERVER_UNAVAILABLE
Der RPC-Server ist nicht verfügbar. Dieser Fehler wird zurückgegeben, wenn ein Remotecomputer im parameter lpServer angegeben wurde und der RPC-Server nicht verfügbar ist.
RPC_E_REMOTE_DISABLED
Remoteaufrufe sind für diesen Prozess nicht zulässig. Dieser Fehler wird zurückgegeben, wenn ein Remotecomputer im lpServer-Parameter angegeben wurde und Remoteaufrufe für diesen Prozess nicht zulässig sind.

Hinweise

Die NetValidateName-Funktion überprüft einen Namen basierend auf dem angegebenen Namenstyp.

Wenn der NameType-ParameterNetSetupMachine lautet, muss der im lpName-Parameter übergebene Name syntaktisch korrekt als NetBIOS-Name sein, und der Name darf derzeit nicht im Netzwerk verwendet werden.

Wenn der NameType-ParameterNetSetupWorkgroup lautet, muss der im lpName-Parameter übergebene Name syntaktisch korrekt als NetBIOS-Name sein, der Name darf derzeit nicht im Netzwerk als eindeutiger Name verwendet werden, und der Name muss sich vom Computernamen unterscheiden.

Wenn der NameType-ParameterNetSetupDomain lautet, muss der im lpName-Parameter übergebene Name syntaktisch korrekt als NetBIOS- oder DNS-Name sein, und der Name muss derzeit als Domänenname registriert werden.

Wenn der NameType-ParameterNetSetupNonExistentDomain lautet, muss der im lpName-Parameter übergebene Name syntaktisch korrekt als NetBIOS- oder DNS-Name sein, und der Name darf derzeit nicht als Domänenname registriert werden.

Wenn der NameType-ParameterNetSetupDnsMachine lautet, muss der im lpName-Parameter übergebene Name syntaktisch korrekt als DNS-Name sein.

NetBIOS-Namen sind auf eine maximale Länge von 16 Zeichen beschränkt.

Für die erfolgreiche Ausführung der NetValidateName-Funktion ist keine spezielle Gruppenmitgliedschaft erforderlich.

Beispiele

Im folgenden Beispiel wird ein Name für einen bestimmten Typ überprüft.

#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;
}


Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile lmjoin.h (lm.h einschließen)
Bibliothek Netapi32.lib
DLL Netapi32.dll

Weitere Informationen

Verzeichnisdienstfunktionen

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

Netzwerkverwaltungsfunktionen

Übersicht über die Netzwerkverwaltung