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 é o 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, DnsDomainName ou DnsTreeName.
[in] Credential
Credencial a ser gravada.
A credencial deve ser aquela que corresponde a TargetInfo Por exemplo, se TargetName for um nome DNS curinga, o membro TargetName da credencial deverá ser um postfixo do membro DnsServerName do TargetInfo.
[in] Flags
Sinalizadores para controlar a operação da API. O sinalizador a seguir é definido.
Valor retornado
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 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 |
---|---|
|
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. |
|
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. |
|
Um valor que não é válido foi especificado para o parâmetro Flags . |
|
O membro UserName da estrutura de credencial passada não é válido. Para obter uma descrição das sintaxes válidas, consulte a definição desse membro. |
|
CRED_PRESERVE_CREDENTIAL_BLOB foi especificado e não há nenhuma credencial existente pelo mesmo TargetName e Type. |
|
A credencial CRED_TYPE_CERTIFICATE que está sendo gravada requer que o leitor de cartão inteligente esteja disponível. |
|
A credencial que está sendo gravada requer que a cartão inteligente seja inserida. |
|
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 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 membro Type da estrutura CREDENTIAL especificada 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
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 |