Compartilhar via


Função CredWriteDomainCredentialsA (wincred.h)

A função CredWriteDomainCredentials grava credenciais de domínio no conjunto de credenciais do usuário. O conjunto de credenciais usado é aquele associado à sessão de logon do token atual. O token não deve ter o SID do usuário desabilitado.

Sintaxe

BOOL CredWriteDomainCredentialsA(
  [in] PCREDENTIAL_TARGET_INFORMATIONA TargetInfo,
  [in] PCREDENTIALA                    Credential,
  [in] DWORD                           Flags
);

Parâmetros

[in] TargetInfo

Identifica o servidor de destino. Pelo menos um dos membros de nomenclatura deve ser não NULL e pode ser NetbiosServerName, DnsServerName, NetbiosDomainName, DnsDomainNameou DnsTreeName.

[in] Credential

Credencial a ser escrita.

A credencial deve ser uma que corresponda TargetInfo, por exemplo, se o TargetName for um nome DNS curinga, o membro TargetName da credencial deverá ser um postfix do membro DnsServerName do TargetInfo.

[in] Flags

Sinalizadores para controlar a operação da API. O sinalizador a seguir é definido.

Valor Significado
CRED_PRESERVE_CREDENTIAL_BLOB
O BLOB de credenciais deve ser preservado da credencial já existente com o mesmo nome de credencial e tipo de credencial. O credentialBlobSize da estrutura de de Credenciais passada deve ser zero.

Valor de retorno

Se a função for bem-sucedida, a função retornará VERDADEIRO.

Se a função falhar, ela retornará FALSE . Chame a função GetLastError para obter um código de status mais específico. Os códigos de status a seguir podem ser retornados.

Outros erros de cartão inteligente podem ser retornados ao escrever uma credencial de CRED_TYPE_CERTIFICATE.

Código de retorno Descrição
ERROR_INVALID_PARAMETER
Um ou mais dos parâmetros não são válidos. Nenhum dos parâmetros de nomenclatura foi especificado ou a credencial especificada não tinha o membro Type definido como CRED_TYPE_DOMAIN_PASSWORD ou CRED_TYPE_DOMAIN_CERTIFICATE ou o de Credencial não corresponde aotargetInfo .
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 valor que não é válido foi especificado para o parâmetro Flags.
ERROR_BAD_USERNAME
O UserName membro da estrutura de de credenciais passada não é válido. Para obter uma descrição das sintaxes válidas, consulte a definição desse membro.
ERROR_NOT_FOUND
CRED_PRESERVE_CREDENTIAL_BLOB foi especificado e não há nenhuma credencial existente pelo mesmo TargetName e Type.
SCARD_E_NO_READERS_AVAILABLE
A CRED_TYPE_CERTIFICATE credencial que está sendo gravada requer que o leitor de cartão inteligente esteja disponível.
SCARD_E_NO_SMARTCARD ou SCARD_W_REMOVED_CARD: o CRED_TYPE_CERTIFICATE
A credencial que está sendo gravada requer que o cartão inteligente seja inserido.
SCARD_W_WRONG_CHV
O PIN errado foi fornecido para o CRED_TYPE_CERTIFICATE credencial que está sendo gravada.

Observações

Quando essa função grava uma credencial de CRED_TYPE_CERTIFICATE, ade Credencial de -membro do CredentialBlob especifica o PIN que protege a chave privada do certificado especificado pelode Credenciais de -UserName. O gerenciador de credenciais não mantém o PIN. Em vez disso, o PIN é passado para o CSP do certificado para uso posterior pelo CSP e pacotes de autenticação. O CSP define o tempo de vida do PIN. Por exemplo, a maioria dos CSPs libera o PIN após a remoção do cartão inteligente.

CredWriteDomainCredentials difere de credWrite, pois manipula as credenciais de idiossincrasias 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 tipo membro da estrutura de DE CREDENCIAIS especificada pelo parâmetro de Credenciais for CRED_TYPE_DOMAIN_EXTENDED, um namespace deverá ser especificado no nome de destino.

Nota

O cabeçalho wincred.h define CredWriteDomainCredentials 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. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho wincred.h
biblioteca Advapi32.lib
de DLL Advapi32.dll