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.
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 |
---|---|
|
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. |
|
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. |
|
Im Netzwerk ist bereits ein doppelter Name vorhanden. |
|
Das Format des angegebenen Computernamens ist ungültig. |
|
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. |
|
Die angegebene Domäne ist nicht vorhanden. |
|
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. |
|
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. |
|
Der angegebene Arbeitsgruppenname ist ungültig. Dieser Fehler wird zurückgegeben, wenn der angegebene NameType-ParameterNetSetupWorkgroup ist und der angegebene Arbeitsgruppenname ungültig ist. |
|
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. |
|
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 |