Función NetValidateName (lmjoin.h)
La función NetValidateName comprueba que un nombre es válido para el tipo de nombre especificado (nombre de equipo, nombre de grupo de trabajo, nombre de dominio o nombre de equipo DNS).
Sintaxis
NET_API_STATUS NET_API_FUNCTION NetValidateName(
[in] LPCWSTR lpServer,
[in] LPCWSTR lpName,
[in] LPCWSTR lpAccount,
[in] LPCWSTR lpPassword,
[in] NETSETUP_NAME_TYPE NameType
);
Parámetros
[in] lpServer
Puntero a una cadena constante que especifica el nombre DNS o NetBIOS del equipo en el que se va a llamar a la función. Si este parámetro es NULL, se usa el equipo local.
[in] lpName
Puntero a una cadena constante que especifica el nombre que se va a validar. Según el valor especificado en el parámetro NameType , el parámetro lpName puede apuntar a un nombre de equipo, un nombre de grupo de trabajo, un nombre de dominio o un nombre de equipo DNS.
[in] lpAccount
Si el parámetro lpName es un nombre de dominio, este parámetro apunta a un nombre de cuenta que se usará al conectarse al controlador de dominio. La cadena debe especificar un nombre netBIOS de dominio y una cuenta de usuario (por ejemplo, "REDMOND\user") o el nombre principal de usuario (UPN) del usuario en forma de nombre de inicio de sesión de estilo Internet (por ejemplo, "someone@example.com"). Si este parámetro es NULL, se usa el contexto del autor de la llamada.
[in] lpPassword
Si el parámetro lpAccount especifica un nombre de cuenta, este parámetro debe apuntar a la contraseña que se usará al conectarse al controlador de dominio. De lo contrario, este parámetro debe ser NULL.
[in] NameType
Tipo del nombre pasado en el parámetro lpName que se va a validar. Este parámetro puede ser uno de los valores del tipo de enumeración NETSETUP_NAME_TYPE definido en el archivo de encabezado Lmjoin.h .
Tenga en cuenta que el archivo de encabezado Lmjoin.h incluye automáticamente el encabezado Lm.h . Los archivos de encabezado Lmjoin.h no deben usarse directamente.
En la lista siguiente se muestran los valores posibles para este parámetro.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto se NERR_Success.
Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
|
El nombre DNS contiene un carácter no válido. Este error se devuelve si el parámetro NameType especificado es NetSetupDnsMachine y el nombre DNS del parámetro lpName contiene un carácter no válido. |
|
El nombre DNS no cumple con las especificaciones rfC. Este error se devuelve si el parámetro NameType especificado es NetSetupDnsMachine y el nombre DNS del parámetro lpName no cumple con las especificaciones rfC. |
|
Ya existe un nombre duplicado en la red. |
|
El formato del nombre de equipo especificado no es válido. |
|
Un parámetro es incorrecto. Este error se devuelve si el parámetro lpName es NULL o el parámetro NameType se especifica como NetSetupUnknown o un tipo de nombre desconocido. |
|
El dominio especificado no existe. |
|
No se admite la solicitud. Este error se devuelve si se especificó un equipo remoto en el parámetro lpServer y esta llamada no se admite en el equipo remoto. |
|
El nombre de equipo especificado no es válido. Este error se devuelve si el parámetro NameType especificado es NetSetupDnsMachine o NetSetupMachine y el nombre de equipo especificado no es válido. |
|
El nombre del grupo de trabajo especificado no es válido. Este error se devuelve si el parámetro NameType especificado es NetSetupWorkgroup y el nombre del grupo de trabajo especificado no es válido. |
|
El servidor RPC no está disponible. Este error se devuelve si se especificó un equipo remoto en el parámetro lpServer y el servidor RPC no está disponible. |
|
No se permiten llamadas remotas para este proceso. Este error se devuelve si se especificó un equipo remoto en el parámetro lpServer y no se permiten llamadas remotas para este proceso. |
Comentarios
La función NetValidateName valida un nombre basado en el tipo de nombre especificado.
Si el parámetro NameType es NetSetupMachine, el nombre pasado en el parámetro lpName debe ser sintácticamente correcto como un nombre NetBIOS y el nombre no debe estar actualmente en uso en la red.
Si el parámetro NameType es NetSetupWorkgroup, el nombre pasado en el parámetro lpName debe ser sintácticamente correcto como un nombre NetBIOS, el nombre no debe estar actualmente en uso en la red como un nombre único y el nombre debe ser diferente del nombre del equipo.
Si el parámetro NameType es NetSetupDomain, el nombre pasado en el parámetro lpName debe ser sintácticamente correcto como un nombre NetBIOS o DNS y el nombre debe estar registrado actualmente como nombre de dominio.
Si el parámetro NameType es NetSetupNonExistentDomain, el nombre pasado en el parámetro lpName debe ser sintácticamente correcto como un nombre NetBIOS o DNS y el nombre no debe estar registrado actualmente como un nombre de dominio.
Si el parámetro NameType es NetSetupDnsMachine, el nombre pasado en el parámetro lpName debe ser sintácticamente correcto como un nombre DNS.
Los nombres NetBIOS están limitados a una longitud máxima de 16 caracteres.
No se requiere pertenencia a grupos especiales para ejecutar correctamente la función NetValidateName .
Ejemplos
En el ejemplo siguiente se valida un nombre para un tipo específico.
#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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | lmjoin.h (include Lm.h) |
Library | Netapi32.lib |
Archivo DLL | Netapi32.dll |
Consulte también
Funciones del servicio de directorio