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 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 |
---|---|
|
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. |
|
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. |
|
Un nom en double existe déjà sur le réseau. |
|
Le format du nom d’ordinateur spécifié n’est pas valide. |
|
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. |
|
Le domaine spécifié n’existe pas. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |