Função CryptUpdateProtectedState (dpapi.h)

A função CryptUpdateProtectedState migra as chaves de master do usuário atual após a alteração do SID (identificador de segurança) do usuário. Essa função pode ser usada para preservar dados criptografados depois que um usuário é movido de um domínio para outro.

Sintaxe

DPAPI_IMP BOOL CryptUpdateProtectedState(
  [in]  PSID    pOldSid,
  [in]  LPCWSTR pwszOldPassword,
  [in]  DWORD   dwFlags,
  [out] DWORD   *pdwSuccessCount,
  [out] DWORD   *pdwFailureCount
);

Parâmetros

[in] pOldSid

O endereço de uma estrutura SID que contém o SID anterior do usuário. Esse SID é usado para localizar as chaves de master antigas. Se esse parâmetro for NULL, as chaves master para o SID do usuário atual serão migradas.

Esse parâmetro ou o parâmetro pwszOldPassword pode ser NULL, mas não ambos.

[in] pwszOldPassword

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo que contém a senha do usuário antes da alteração do SID. Essa senha é usada para descriptografar as chaves de master antigas. Se esse parâmetro for NULL, a senha do usuário atual será usada.

Esse parâmetro ou o parâmetro pOldSid pode ser NULL, mas não ambos.

[in] dwFlags

Não usado. Deve ser zero.

[out] pdwSuccessCount

O endereço de uma variável DWORD que recebe o número de chaves master que foram migradas com êxito.

[out] pdwFailureCount

O endereço de uma variável DWORD que recebe o número de chaves de master que não puderam ser descriptografadas.

Não será necessariamente um erro se uma ou mais chaves de master não puderem ser descriptografadas. Alguns usuários podem possuir master chaves que estão estagnadas e não podem ter sido descriptografadas por muito tempo. Uma maneira de isso acontecer é quando a senha de um usuário local foi redefinida administrativamente.

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis incluem o seguinte.

Código de retorno Descrição
ERROR_INVALID_PARAMETER
Um dos parâmetros contém um valor que não é válido.
ERROR_OUTOFMEMORY
Ocorreu uma falha de alocação de memória.
ERROR_ENCRYPTION_FAILED
A senha antiga não pôde ser criptografada.

Comentários

Essa função descriptografa todas as chaves de master do usuário no diretório de chave de master antigo, usando a senha anterior e as armazena no diretório de chave master atual do usuário, criptografada com a senha atual do usuário.

Essa função deve ser chamada da conta de usuário para a qual as chaves estão sendo migradas.

Se essa função for capaz de migrar com êxito uma chave de master antiga, ela excluirá automaticamente a chave de master antiga. As chaves mestras que não podem ser descriptografadas não são excluídas.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho dpapi.h
Biblioteca Crypt32.lib
DLL Crypt32.dll