Função CredWriteW (wincred.h)

A função CredWrite cria uma nova credencial ou modifica uma credencial existente no conjunto de credenciais do usuário. A nova credencial está associada à sessão de logon do token atual. O token não deve ter o SID ( identificador de segurança ) do usuário desabilitado.

Sintaxe

BOOL CredWriteW(
  [in] PCREDENTIALW Credential,
  [in] DWORD        Flags
);

Parâmetros

[in] Credential

Um ponteiro para a estrutura CREDENTIAL a ser gravada.

[in] Flags

Sinalizadores que controlam a operação da função. O sinalizador a seguir é definido.

Valor Significado
CRED_PRESERVE_CREDENTIAL_BLOB
O BLOB de credenciais de uma credencial existente é preservado 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.

Valor/código retornado Descrição
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_PARAMETER
Determinados campos não podem ser alterados em uma credencial existente. Esse erro será retornado se um campo não corresponder ao valor em um campo protegido da credencial existente.
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 da sintaxe de nome de usuário válida, 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
Uma credencial CRED_TYPE_CERTIFICATE 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

Essa função criará uma credencial se uma credencial com o TargetName e o Type especificados não existirem. Se existir uma credencial com o TargetName e o Type especificados, a nova credencial especificada substituirá a existente.

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 membro Credential-UserName.> O gerenciador de credenciais não mantém o PIN. Em vez disso, o PIN é passado para o CSP ( provedor de serviços criptográficos ) indicado no certificado para uso posterior pelo CSP e pelos pacotes de autenticação. O CSP define o tempo de vida do PIN. A maioria dos CSPs libera o PIN quando o cartão inteligente é removido do leitor de cartão inteligente.

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. Essa função não dá suporte à gravação em nomes de destino que contêm caracteres curinga.

Observação

O cabeçalho wincred.h define CredWrite 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

Confira também

CREDENCIAL