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.
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 |
---|---|
|
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. |
|
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. |
|
Um nome duplicado já existe na rede. |
|
O formato do nome do computador especificado não é válido. |
|
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. |
|
O domínio especificado não existe. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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