NetValidateName, fonction (lmjoin.h)

La fonction NetValidateName vérifie qu’un nom est valide pour le type de nom spécifié (nom d’ordinateur, nom de groupe de travail, nom de domaine ou nom d’ordinateur DNS).

Syntaxe

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

Paramètres

[in] lpServer

Pointeur vers une chaîne constante qui spécifie le nom DNS ou NetBIOS de l’ordinateur sur lequel appeler la fonction. Si ce paramètre a la valeur NULL, l’ordinateur local est utilisé.

[in] lpName

Pointeur vers une chaîne constante qui spécifie le nom à valider. Selon la valeur spécifiée dans le paramètre NameType , le paramètre lpName peut pointer vers un nom d’ordinateur, un nom de groupe de travail, un nom de domaine ou un nom d’ordinateur DNS.

[in] lpAccount

Si le paramètre lpName est un nom de domaine, ce paramètre pointe vers un nom de compte à utiliser lors de la connexion au contrôleur de domaine. La chaîne doit spécifier un nom netBIOS de domaine et un compte d’utilisateur (par exemple, « REDMOND\user ») ou le nom d’utilisateur principal (UPN) de l’utilisateur sous la forme d’un nom de connexion de style Internet (par exemple, «someone@example.com »). Si ce paramètre a la valeur NULL, le contexte de l’appelant est utilisé.

[in] lpPassword

Si le paramètre lpAccount spécifie un nom de compte, ce paramètre doit pointer vers le mot de passe à utiliser lors de la connexion au contrôleur de domaine. Sinon, ce paramètre doit être NULL.

[in] NameType

Type du nom passé dans le paramètre lpName à valider. Ce paramètre peut être l’une des valeurs du type d’énumération NETSETUP_NAME_TYPE défini dans le fichier d’en-tête Lmjoin.h .

Notez que l’en-tête Lmjoin.h est automatiquement inclus par le fichier d’en-tête Lm.h . Les fichiers d’en-tête Lmjoin.h ne doivent pas être utilisés directement.

La liste suivante montre les valeurs possibles pour ce paramètre.

Valeur Signification
NetSetupUnknown
0
Le type de nom est inconnu. Si cette valeur est utilisée, la fonction NetValidateName échoue avec ERROR_INVALID_PARAMETER.
NetSetupMachine
1
Vérifiez que le nom de l’ordinateur NetBIOS est valide et qu’il n’est pas utilisé.
NetSetupWorkgroup
2
Vérifiez que le nom du groupe de travail est valide.
NetSetupDomain
3
Vérifiez que le nom de domaine existe et qu’il s’agit d’un domaine.
NetSetupNonExistentDomain
4
Vérifiez que le nom de domaine n’est pas utilisé.
NetSetupDnsMachine
5
Vérifiez que le nom de l’ordinateur DNS est valide.

Cette valeur est prise en charge sur Windows 2000 et versions ultérieures. L’application doit être compilée avec _WIN32_WINNT >= 0x0500 pour utiliser cette valeur.

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour peut être l’un des codes d’erreur suivants.

Code de retour Description
DNS_ERROR_INVALID_NAME_CHAR
Le nom DNS contient un caractère non valide. Cette erreur est retournée si le paramètre NameType spécifié est NetSetupDnsMachine et que le nom DNS dans le paramètre lpName contient un caractère non valide.
DNS_ERROR_NON_RFC_NAME
Le nom DNS n’est pas conforme aux spécifications RFC. Cette erreur est retournée si le paramètre NameType spécifié est NetSetupDnsMachine et que le nom DNS dans le paramètre lpName ne respecte pas les spécifications RFC.
ERROR_DUP_NAME
Un nom en double existe déjà sur le réseau.
ERROR_INVALID_COMPUTERNAME
Le format du nom d’ordinateur spécifié n’est pas valide.
ERROR_INVALID_PARAMETER
Un paramètre est incorrect. Cette erreur est retournée si le paramètre lpName a la valeur NULL ou si le paramètre NameType est spécifié en tant que NetSetupUnknown ou un type de nom inconnu.
ERROR_NO_SUCH_DOMAIN
Le domaine spécifié n’existe pas.
ERROR_NOT_SUPPORTED
La demande n'est pas prise en charge. Cette erreur est retournée si un ordinateur distant a été spécifié dans le paramètre lpServer et que cet appel n’est pas pris en charge sur l’ordinateur distant.
NERR_InvalidComputer
Le nom d’ordinateur spécifié n’est pas valide. Cette erreur est retournée si le paramètre NameType spécifié est NetSetupDnsMachine ou NetSetupMachine et que le nom d’ordinateur spécifié n’est pas valide.
NERR_InvalidWorkgroupName
Le nom du groupe de travail spécifié n’est pas valide. Cette erreur est retournée si le paramètre NameType spécifié est NetSetupWorkgroup et si le nom du groupe de travail spécifié n’est pas valide.
RPC_S_SERVER_UNAVAILABLE
Le serveur RPC n’est pas disponible. Cette erreur est retournée si un ordinateur distant a été spécifié dans le paramètre lpServer et que le serveur RPC n’est pas disponible.
RPC_E_REMOTE_DISABLED
Les appels distants ne sont pas autorisés pour ce processus. Cette erreur est retournée si un ordinateur distant a été spécifié dans le paramètre lpServer et que les appels distants ne sont pas autorisés pour ce processus.

Remarques

La fonction NetValidateName valide un nom basé sur le type de nom spécifié.

Si le paramètre NameType est NetSetupMachine, le nom transmis dans le paramètre lpName doit être syntaxiquement correct en tant que nom NetBIOS et le nom ne doit pas être actuellement utilisé sur le réseau.

Si le paramètre NameType est NetSetupWorkgroup, le nom passé dans le paramètre lpName doit être syntaxiquement correct en tant que nom NetBIOS, le nom ne doit pas être actuellement utilisé sur le réseau en tant que nom unique et le nom doit être différent du nom de l’ordinateur.

Si le paramètre NameType est NetSetupDomain, le nom transmis dans le paramètre lpName doit être syntaxiquement correct en tant que nom NetBIOS ou DNS et le nom doit actuellement être inscrit en tant que nom de domaine.

Si le paramètre NameType est NetSetupNonExistentDomain, le nom passé dans le paramètre lpName doit être syntaxiquement correct en tant que nom NetBIOS ou DNS et le nom ne doit actuellement pas être inscrit en tant que nom de domaine.

Si le paramètre NameType est NetSetupDnsMachine, le nom transmis dans le paramètre lpName doit être syntaxiquement correct en tant que nom DNS.

Les noms NetBIOS sont limités à une longueur maximale de 16 caractères.

Aucune appartenance à un groupe spécial n’est requise pour exécuter correctement la fonction NetValidateName .

Exemples

L’exemple suivant valide un nom pour un type spécifique.

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


Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmjoin.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

Fonctions de service d’annuaire

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau