Función CryptUpdateProtectedState (dpapi.h)

La función CryptUpdateProtectedState migra las claves maestras del usuario actual después de que haya cambiado el identificador de seguridad (SID) del usuario. Esta función se puede usar para conservar los datos cifrados después de que un usuario se haya movido de un dominio a otro.

Sintaxis

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

Parámetros

[in] pOldSid

Dirección de una estructura de SID que contiene el SID anterior del usuario. Este SID se usa para localizar las claves maestras antiguas. Si este parámetro es NULL, se migran las claves maestras del SID de usuario actual.

Este parámetro o el parámetro pwszOldPassword pueden ser NULL, pero no ambos.

[in] pwszOldPassword

Puntero a una cadena Unicode terminada en null que contiene la contraseña del usuario antes de cambiar el SID. Esta contraseña se usa para descifrar las claves maestras antiguas. Si este parámetro es NULL, se usará la contraseña del usuario actual.

Este parámetro o el parámetro pOldSid pueden ser NULL, pero no ambos.

[in] dwFlags

No se usa. Debe ser cero.

[out] pdwSuccessCount

Dirección de una variable DWORD que recibe el número de claves maestras que se migraron correctamente.

[out] pdwFailureCount

Dirección de una variable DWORD que recibe el número de claves maestras que no se pudieron descifrar.

No es necesariamente un error si no se pueden descifrar una o varias claves maestras. Algunos usuarios pueden poseer claves maestras que están estancadas y que no se pudieron descifrar durante mucho tiempo. Una manera de que esto puede ocurrir es cuando la contraseña de un usuario local se ha restablecido administrativamente.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError. Algunos códigos de error posibles incluyen lo siguiente.

Código devuelto Descripción
ERROR_INVALID_PARAMETER
Uno de los parámetros contiene un valor que no es válido.
ERROR_OUTOFMEMORY
Error de asignación de memoria.
ERROR_ENCRYPTION_FAILED
No se pudo cifrar la contraseña antigua.

Comentarios

Esta función descifra todas las claves maestras del usuario en el directorio de claves maestras anterior, con la contraseña anterior y las almacena en el directorio de claves maestras actual del usuario, cifrada con la contraseña actual del usuario.

Se debe llamar a esta función desde la cuenta de usuario a la que se van a migrar las claves.

Si esta función puede migrar correctamente una clave maestra antigua, eliminará automáticamente la clave maestra antigua. Las claves maestras que no se pueden descifrar no se eliminan.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado dpapi.h
Library Crypt32.lib
Archivo DLL Crypt32.dll