Compartilhar via


Função NetValidateName (lmjoin.h)

A função NetValidateName verifica se um nome é válido para o tipo de nome especificado (nome do computador, nome do grupo de trabalho, nome de domínio ou nome do computador DNS).

Sintaxe

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

Um ponteiro para uma cadeia de caracteres constante que especifica o nome DNS ou NetBIOS do computador no qual chamar a função. Se esse parâmetro for NULL, o computador local será usado.

[in] lpName

Um ponteiro para uma cadeia de caracteres constante que especifica o nome a ser validado. Dependendo do valor especificado no parâmetro NameType , o parâmetro lpName pode apontar para um nome de computador, nome do grupo de trabalho, nome de domínio ou nome do computador DNS.

[in] lpAccount

Se o parâmetro lpName for um nome de domínio, esse parâmetro apontará para um nome de conta a ser usado ao se conectar ao controlador de domínio. A cadeia de caracteres deve especificar um nome netBIOS de domínio e uma conta de usuário (por exemplo, "REDMOND\user") ou o nome upn do usuário na forma de um nome de logon no estilo internet (por exemplo, "someone@example.com"). Se esse parâmetro for NULL, o contexto do chamador será usado.

[in] lpPassword

Se o parâmetro lpAccount especificar um nome de conta, esse parâmetro deverá apontar para a senha a ser usada ao se conectar ao controlador de domínio. Caso contrário, esse parâmetro deve ser NULL.

[in] NameType

O tipo do nome passado no parâmetro lpName para validar. Esse parâmetro pode ser um dos valores do tipo de enumeração NETSETUP_NAME_TYPE definido no arquivo de cabeçalho Lmjoin.h .

Observe que o cabeçalho Lmjoin.h é incluído automaticamente pelo arquivo de cabeçalho Lm.h . Os arquivos de cabeçalho Lmjoin.h não devem ser usados diretamente.

A lista a seguir mostra os valores possíveis para esse parâmetro.

Valor Significado
NetSetupUnknown
0
O nametype é desconhecido. Se esse valor for usado, a função NetValidateName falhará com ERROR_INVALID_PARAMETER.
NetSetupMachine
1
Verifique se o nome do computador NetBIOS é válido e se ele não está em uso.
NetSetupWorkgroup
2
Verifique se o nome do grupo de trabalho é válido.
NetSetupDomain
3
Verifique se o nome de domínio existe e se ele é um domínio.
NetSetupNonExistentDomain
4
Verifique se o nome de domínio não está em uso.
NetSetupDnsMachine
5
Verifique se o nome do computador DNS é válido.

Esse valor tem suporte no Windows 2000 e posterior. O aplicativo deve ser compilado com _WIN32_WINNT >= 0x0500 para usar esse valor.

Retornar valor

Se a função for bem-sucedida, o valor retornado será NERR_Success.

Se a função falhar, o valor retornado poderá ser um dos seguintes códigos de erro.

Código de retorno Descrição
DNS_ERROR_INVALID_NAME_CHAR
O nome DNS contém um caractere inválido. Esse erro será retornado se o parâmetro NameType especificado for NetSetupDnsMachine e o nome DNS no parâmetro lpName contiver um caractere inválido.
DNS_ERROR_NON_RFC_NAME
O nome DNS não está em conformidade com as especificações de RFC. Esse erro será retornado se o parâmetro NameType especificado for NetSetupDnsMachine e o nome DNS no parâmetro lpName não estiver em conformidade com as especificações de RFC.
ERROR_DUP_NAME
Um nome duplicado já existe na rede.
ERROR_INVALID_COMPUTERNAME
O formato do nome do computador especificado não é válido.
ERROR_INVALID_PARAMETER
Um parâmetro está incorreto. Esse erro será retornado se o parâmetro lpName for NULL ou o parâmetro NameType for especificado como NetSetupUnknown ou um nametype desconhecido.
ERROR_NO_SUCH_DOMAIN
O domínio especificado não existe.
ERROR_NOT_SUPPORTED
A solicitação não terá suporte. Esse erro será retornado se um computador remoto tiver sido especificado no parâmetro lpServer e essa chamada não tiver suporte no computador remoto.
NERR_InvalidComputer
O nome do computador especificado não é válido. Esse erro será retornado se o parâmetro NameType especificado for NetSetupDnsMachine ou NetSetupMachine e o nome do computador especificado não for válido.
NERR_InvalidWorkgroupName
O nome do grupo de trabalho especificado não é válido. Esse erro será retornado se o parâmetro NameType especificado for NetSetupWorkgroup e o nome do grupo de trabalho especificado não for válido.
RPC_S_SERVER_UNAVAILABLE
O servidor RPC não está disponível. Esse erro será retornado se um computador remoto tiver sido especificado no parâmetro lpServer e o servidor RPC não estiver disponível.
RPC_E_REMOTE_DISABLED
Chamadas remotas não são permitidas para esse processo. Esse erro será retornado se um computador remoto tiver sido especificado no parâmetro lpServer e as chamadas remotas não forem permitidas para esse processo.

Comentários

A função NetValidateName valida um nome com base no nametype especificado.

Se o parâmetro NameType for NetSetupMachine, o nome passado no parâmetro lpName deverá estar sintaticamente correto como um nome NetBIOS e o nome não deve estar em uso atualmente na rede.

Se o parâmetro NameType for NetSetupWorkgroup, o nome passado no parâmetro lpName deverá estar sintaticamente correto como um nome NetBIOS, o nome não deve estar atualmente em uso na rede como um nome exclusivo e o nome deve ser diferente do nome do computador.

Se o parâmetro NameType for NetSetupDomain, o nome passado no parâmetro lpName deverá estar sintaticamente correto como um nome NetBIOS ou DNS e o nome deve estar registrado no momento como um nome de domínio.

Se o parâmetro NameType for NetSetupNonExistentDomain, o nome passado no parâmetro lpName deverá estar sintaticamente correto como um nome NetBIOS ou DNS e o nome atualmente não deve ser registrado como um nome de domínio.

Se o parâmetro NameType for NetSetupDnsMachine, o nome passado no parâmetro lpName deverá estar sintaticamente correto como um nome DNS.

Os nomes NetBIOS são limitados ao comprimento máximo de 16 caracteres.

Nenhuma associação de grupo especial é necessária para executar com êxito a função NetValidateName .

Exemplos

O exemplo a seguir valida um nome para um 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 Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho lmjoin.h (inclua Lm.h)
Biblioteca Netapi32.lib
DLL Netapi32.dll

Confira também

Funções de serviço de diretório

NetGetJoinInformation

NetGetJoinableOUs

NetJoinDomain

NetRenameMachineInDomain

NetUnjoinDomain

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede