Função CredWriteDomainCredentialsW (wincred.h)

A função CredWriteDomainCredentials grava credenciais de domínio no 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 CredWriteDomainCredentialsW(
  [in] PCREDENTIAL_TARGET_INFORMATIONW TargetInfo,
  [in] PCREDENTIALW                    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, DnsDomainName ou DnsTreeName.

[in] Credential

Credencial a ser gravada.

A credencial deve ser aquela que corresponda a TargetInfo Por exemplo, se 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 credential passada deve ser zero.

Retornar valor

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

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

Outros erros de cartão inteligentes podem ser retornados ao gravar 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 a Credencial não corresponde ao TargetInfo.
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 membro UserName da estrutura 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 credencial CRED_TYPE_CERTIFICATE 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 a cartão inteligente seja inserida.
SCARD_W_WRONG_CHV
O PIN errado foi fornecido para o CRED_TYPE_CERTIFICATE credencial que está sendo gravada.

Comentários

Quando essa função grava uma credencial CRED_TYPE_CERTIFICATE, o membro Credential-CredentialBlob > especifica o PIN que protege a chave privada do certificado especificado pelo Credential-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 de cartão inteligente.

CredWriteDomainCredentials difere de CredWrite , pois manipula 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 especificado pelo parâmetro Credential for CRED_TYPE_DOMAIN_EXTENDED, um namespace deverá ser especificado no nome de destino.

Observação

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 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

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