Função CredReadDomainCredentialsW (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 CredReadDomainCredentialsW(
  [in]  PCREDENTIAL_TARGET_INFORMATIONW TargetInfo,
  [in]  DWORD                           Flags,
  [out] DWORD                           *Count,
  [out] PCREDENTIALW                    **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 de 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.

Valor retornado

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 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 é retornada se mais de uma corresponder:

  • O nome de destino da credencial é do formulário <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 formulário <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 "*".
CredReadDomainCredentials difere de CredRead , pois trata as idiossincrasias de credenciais de domínio (CRED_TYPE_DOMAIN_PASSWORD ou CRED_TYPE_DOMAIN_CERTIFICATE). As credenciais de domínio contêm mais de um membro de destino.

Se o valor do membro Type da estrutura CREDENTIAL especificada 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 de 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 de 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

   
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