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 Significado
NetSetupUnknown
0
El tipo de nombre es desconocido. Si se usa este valor, se produce un error en la función NetValidateName con ERROR_INVALID_PARAMETER.
NetSetupMachine
1
Compruebe que el nombre del equipo NetBIOS es válido y que no está en uso.
NetSetupWorkgroup
2
Compruebe que el nombre del grupo de trabajo es válido.
NetSetupDomain
3
Compruebe que el nombre de dominio existe y que es un dominio.
NetSetupNonExistentDomain
4
Compruebe que el nombre de dominio no está en uso.
NetSetupDnsMachine
5
Compruebe que el nombre del equipo DNS es válido.

Este valor se admite en Windows 2000 y versiones posteriores. La aplicación debe compilarse con _WIN32_WINNT >= 0x0500 para usar este valor.

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
DNS_ERROR_INVALID_NAME_CHAR
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.
DNS_ERROR_NON_RFC_NAME
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.
ERROR_DUP_NAME
Ya existe un nombre duplicado en la red.
ERROR_INVALID_COMPUTERNAME
El formato del nombre de equipo especificado no es válido.
ERROR_INVALID_PARAMETER
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.
ERROR_NO_SUCH_DOMAIN
El dominio especificado no existe.
ERROR_NOT_SUPPORTED
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.
NERR_InvalidComputer
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.
NERR_InvalidWorkgroupName
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.
RPC_S_SERVER_UNAVAILABLE
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.
RPC_E_REMOTE_DISABLED
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

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

Funciones de administración de redes

Introducción a la administración de redes