Funzione NetValidateName (lmjoin.h)
La funzione NetValidateName verifica che un nome sia valido per il tipo di nome specificato(nome computer, nome del gruppo di lavoro, nome di dominio o nome computer DNS).
Sintassi
NET_API_STATUS NET_API_FUNCTION NetValidateName(
[in] LPCWSTR lpServer,
[in] LPCWSTR lpName,
[in] LPCWSTR lpAccount,
[in] LPCWSTR lpPassword,
[in] NETSETUP_NAME_TYPE NameType
);
Parametri
[in] lpServer
Puntatore a una stringa costante che specifica il nome DNS o NetBIOS del computer in cui chiamare la funzione. Se questo parametro è NULL, viene utilizzato il computer locale.
[in] lpName
Puntatore a una stringa costante che specifica il nome da convalidare. A seconda del valore specificato nel parametro NameType , il parametro lpName può puntare a un nome computer, un nome del gruppo di lavoro, un nome di dominio o un nome computer DNS.
[in] lpAccount
Se il parametro lpName è un nome di dominio, questo parametro punta a un nome di account da usare per la connessione al controller di dominio. La stringa deve specificare un nome NetBIOS di dominio e un account utente (ad esempio, "REDMOND\user") o il nome dell'entità utente (UPN) dell'utente sotto forma di nome di accesso in stile Internet ,ad esempio "someone@example.com". Se questo parametro è NULL, viene usato il contesto del chiamante.
[in] lpPassword
Se il parametro lpAccount specifica un nome di account, questo parametro deve puntare alla password da usare per la connessione al controller di dominio. In caso contrario, questo parametro deve essere NULL.
[in] NameType
Tipo del nome passato nel parametro lpName da convalidare. Questo parametro può essere uno dei valori del tipo di enumerazione NETSETUP_NAME_TYPE definito nel file di intestazione Lmjoin.h .
Si noti che l'intestazione Lmjoin.h viene inclusa automaticamente dal file di intestazione Lm.h . I file di intestazione Lmjoin.h non devono essere usati direttamente.
L'elenco seguente mostra i valori possibili per questo parametro.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene NERR_Success.
Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.
Codice restituito | Descrizione |
---|---|
|
Il nome DNS contiene un carattere non valido. Questo errore viene restituito se il parametro NameType specificato è NetSetupDnsMachine e il nome DNS nel parametro lpName contiene un carattere non valido. |
|
Il nome DNS non è conforme alle specifiche RFC. Questo errore viene restituito se il parametro NameType specificato è NetSetupDnsMachine e il nome DNS nel parametro lpName non è conforme alle specifiche RFC. |
|
Esiste già un nome duplicato nella rete. |
|
Il formato del nome computer specificato non è valido. |
|
Un parametro non è corretto. Questo errore viene restituito se il parametro lpName è NULL o il parametro NameType viene specificato come NetSetupUnknown o un nometipo sconosciuto. |
|
Il dominio specificato non esiste. |
|
La richiesta non è supportata. Questo errore viene restituito se nel parametro lpServer è stato specificato un computer remoto e questa chiamata non è supportata nel computer remoto. |
|
Il nome del computer specificato non è valido. Questo errore viene restituito se il parametro NameType specificato è NetSetupDnsMachine o NetSetupMachine e il nome computer specificato non è valido. |
|
Il nome del gruppo di lavoro specificato non è valido. Questo errore viene restituito se il parametro NameType specificato è NetSetupWorkgroup e il nome del gruppo di lavoro specificato non è valido. |
|
Il server RPC non è disponibile. Questo errore viene restituito se è stato specificato un computer remoto nel parametro lpServer e il server RPC non è disponibile. |
|
Le chiamate remote non sono consentite per questo processo. Questo errore viene restituito se un computer remoto è stato specificato nel parametro lpServer e le chiamate remote non sono consentite per questo processo. |
Commenti
La funzione NetValidateName convalida un nome in base al nometipo specificato.
Se il parametro NameType è NetSetupMachine, il nome passato nel parametro lpName deve essere sintatticamente corretto come nome NetBIOS e il nome non deve essere attualmente in uso nella rete.
Se il parametro NameType è NetSetupWorkgroup, il nome passato nel parametro lpName deve essere sintatticamente corretto come nome NetBIOS, il nome non deve essere attualmente in uso nella rete come nome univoco e il nome deve essere diverso dal nome del computer.
Se il parametro NameType è NetSetupDomain, il nome passato nel parametro lpName deve essere sintatticamente corretto come nome NetBIOS o DNS e il nome deve essere attualmente registrato come nome di dominio.
Se il parametro NameType è NetSetupNonExistentDomain, il nome passato nel parametro lpName deve essere sintatticamente corretto come nome NetBIOS o DNS e il nome non deve essere attualmente registrato come nome di dominio.
Se il parametro NameType è NetSetupDnsMachine, il nome passato nel parametro lpName deve essere sintatticamente corretto come nome DNS.
I nomi NetBIOS sono limitati alla lunghezza massima di 16 caratteri.
Per eseguire correttamente la funzione NetValidateName non è necessaria alcuna appartenenza a gruppi speciali.
Esempio
Nell'esempio seguente viene convalidato un nome per un tipo specifico.
#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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | lmjoin.h (include Lm.h) |
Libreria | Netapi32.lib |
DLL | Netapi32.dll |