Condividi tramite


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 Significato
NetSetupUnknown
0
Il nometipo è sconosciuto. Se questo valore viene usato, la funzione NetValidateName ha esito negativo con ERROR_INVALID_PARAMETER.
NetSetupMachine
1
Verificare che il nome del computer NetBIOS sia valido e che non sia in uso.
NetSetupWorkgroup
2
Verificare che il nome del gruppo di lavoro sia valido.
NetSetupDomain
3
Verificare che il nome di dominio esista e che si tratti di un dominio.
NetSetupNonExistentDomain
4
Verificare che il nome di dominio non sia in uso.
NetSetupDnsMachine
5
Verificare che il nome del computer DNS sia valido.

Questo valore è supportato in Windows 2000 e versioni successive. L'applicazione deve essere compilata con _WIN32_WINNT >= 0x0500 per usare questo valore.

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
DNS_ERROR_INVALID_NAME_CHAR
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.
DNS_ERROR_NON_RFC_NAME
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.
ERROR_DUP_NAME
Esiste già un nome duplicato nella rete.
ERROR_INVALID_COMPUTERNAME
Il formato del nome computer specificato non è valido.
ERROR_INVALID_PARAMETER
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.
ERROR_NO_SUCH_DOMAIN
Il dominio specificato non esiste.
ERROR_NOT_SUPPORTED
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.
NERR_InvalidComputer
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.
NERR_InvalidWorkgroupName
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.
RPC_S_SERVER_UNAVAILABLE
Il server RPC non è disponibile. Questo errore viene restituito se è stato specificato un computer remoto nel parametro lpServer e il server RPC non è disponibile.
RPC_E_REMOTE_DISABLED
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

Vedi anche

Funzioni del servizio directory

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

Funzioni di gestione di rete

Panoramica della gestione della rete