Função CredReadDomainCredentialsA (wincred.h)
A função CredReadDomainCredentials lê as credenciais de domínio do conjunto de credenciais do usuário. O conjunto de credenciais usado é o associado à sessão de logon do token atual. O token não deve ter o SID do usuário desabilitado.
Sintaxe
BOOL CredReadDomainCredentialsA(
[in] PCREDENTIAL_TARGET_INFORMATIONA TargetInfo,
[in] DWORD Flags,
[out] DWORD *Count,
[out] PCREDENTIALA **Credential
);
Parâmetros
[in] TargetInfo
Informações de destino que identificam o servidor de destino. Pelo menos um dos membros de nomenclatura não deve ser NULL: NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainName ou DnsTreeName.
[in] Flags
Sinalizadores que controlam a operação da função.
O seguinte sinalizador é definido:
CRED_CACHE_TARGET_INFORMATION
Armazene em cache o TargetInfo para uma leitura subsequente usando CredGetTargetInfo.
[out] Count
Contagem das credenciais retornadas na matriz Credenciais .
[out] Credential
Ponteiro para uma matriz de ponteiros para credenciais. A credencial existente mais específica que corresponde ao TargetInfo é retornada. Se houver credenciais de vários tipos (por exemplo, CRED_TYPE_DOMAIN_PASSWORD e credenciais de CRED_TYPE_DOMAIN_CERTIFICATE), um de cada tipo será retornado. Se uma conexão fosse feita com o destino nomeado, essa credencial mais específica seria usada.
Somente esses tipos de credencial especificados pelo TargetInfo. A matriz CredTypes é retornada. A matriz Credenciais retornada é classificada na mesma ordem que o TargetInfo. Matriz CredTypes. Ou seja, os pacotes de autenticação especificam um tipo de credencial preferencial especificando-o anteriormente no TargetInfo. Matriz CredTypes. Se TargetInfo. CredTypeCount é zero, a matriz Credenciais é retornada na seguinte ordem classificada:
- CRED_TYPE_DOMAIN_CERTIFICATE
- CRED_TYPE_DOMAIN_PASSWORD
O buffer retornado é um único bloco alocado. Todos os ponteiros contidos no buffer são ponteiros para locais dentro desse único bloco alocado. O único buffer retornado deve ser liberado chamando CredFree.
Retornar valor
A função retorna TRUE em caso de êxito e FALSE em caso de falha. A função GetLastError pode ser chamada para obter um código de status mais específico. Os seguintes códigos de status podem ser retornados:
- ERROR_INVALID_PARAMETER
Nenhum dos parâmetros de nomenclatura foi especificado.
- ERROR_NOT_FOUND
Não há credenciais que correspondam aos parâmetros de nomenclatura especificados.
- ERROR_NO_SUCH_LOGON_SESSION
A sessão de logon não existe ou não há nenhum conjunto de credenciais associado a esta sessão de logon. As sessões de logon de rede não têm um conjunto de credenciais associado.
- ERROR_INVALID_FLAGS
Um sinalizador que não é válido foi especificado para o parâmetro Flags .
Comentários
Essa função retorna as credenciais mais específicas que correspondem aos parâmetros de nomenclatura. Por exemplo, se houver uma credencial que corresponda ao nome do servidor de destino e a uma credencial que corresponda ao nome de domínio de destino, somente a credencial específica do servidor será retornada. Essa é a credencial que seria usada.
A lista a seguir especifica a ordem (da mais específica para a menos específica) de qual credencial será retornada se mais de uma corresponder:
- O nome de destino da credencial é do formato <DfsRoot>\<DfsShare> e é uma correspondência exata no TargetName.
- Uma correspondência exata no DnsServerName.
- Uma correspondência exata no NetBIOSServerName.
- Uma correspondência exata em TargetName.
- Uma correspondência do DnsServerName com uma credencial de servidor curinga. Se mais de uma credencial de servidor curinga corresponder, a credencial com o TargetName mais longo será usada. Ou seja, uma credencial para *.example.microsoft.com é usada em vez de uma credencial para *.microsoft.com.
- Uma correspondência exata do DnsDomainName com uma credencial de domínio curinga do formato <DnsDomainName>\*.
- Uma correspondência exata do NetBIOSDomainName com uma credencial de domínio curinga do formulário <NetBIOSDomainName>\*
- A credencial chamada CRED_SESSION_WILDCARD_NAME.
- A credencial chamada "*".
Se o valor do membro Type da estrutura CREDENTIAL especificado pelo parâmetro Credentials for CRED_TYPE_DOMAIN_EXTENDED, um namespace deverá ser especificado no nome de destino. Essa função pode retornar apenas uma credencial do tipo especificado.
Essa função pode retornar várias credenciais desse tipo, mas CRED_TYPE_DOMAIN_EXTENDED não pode ser misturada com outros tipos no membro CredTypes da estrutura CREDENTIAL_TARGET_INFORMATION especificada pelo parâmetro TargetInfo .
Observação
O cabeçalho wincred.h define CredReadDomainCredentials como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wincred.h |
Biblioteca | Advapi32.lib |
DLL | Advapi32.dll |