Partager via


Fonction CryptUpdateProtectedState (dpapi.h)

La fonction CryptUpdateProtectedState migre les clés master de l’utilisateur actuel après la modification de l’identificateur de sécurité (SID) de l’utilisateur. Cette fonction peut être utilisée pour conserver des données chiffrées une fois qu’un utilisateur a été déplacé d’un domaine à un autre.

Syntaxe

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

Paramètres

[in] pOldSid

Adresse d’une structure SID qui contient le SID précédent de l’utilisateur. Ce SID est utilisé pour localiser les anciennes clés master. Si ce paramètre a la valeur NULL, les clés master pour le SID utilisateur actuel sont migrées.

Ce paramètre ou le paramètre pwszOldPassword peut être NULL, mais pas les deux.

[in] pwszOldPassword

Pointeur vers une chaîne Unicode terminée par un caractère Null qui contient le mot de passe de l’utilisateur avant la modification du SID. Ce mot de passe est utilisé pour déchiffrer les anciennes clés master. Si ce paramètre a la valeur NULL, le mot de passe de l’utilisateur actuel est utilisé.

Ce paramètre ou le paramètre pOldSid peut être NULL, mais pas les deux.

[in] dwFlags

Non utilisé. Doit être zéro.

[out] pdwSuccessCount

Adresse d’une variable DWORD qui reçoit le nombre de clés master qui ont été correctement migrées.

[out] pdwFailureCount

Adresse d’une variable DWORD qui reçoit le nombre de clés master qui n’ont pas pu être déchiffrées.

Il ne s’agit pas nécessairement d’une erreur si une ou plusieurs clés master ne peuvent pas être déchiffrées. Certains utilisateurs peuvent posséder des clés master qui sont stagnantes et qui n’ont pas pu être déchiffrées depuis longtemps. Cela peut se produire lorsque le mot de passe d’un utilisateur local a été réinitialisé administrativement.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE.

Si la fonction échoue, la valeur de retour est FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Voici quelques codes d’erreur possibles.

Code de retour Description
ERROR_INVALID_PARAMETER
L’un des paramètres contient une valeur qui n’est pas valide.
ERROR_OUTOFMEMORY
Un échec d’allocation de mémoire s’est produit.
ERROR_ENCRYPTION_FAILED
Impossible de chiffrer l’ancien mot de passe.

Remarques

Cette fonction déchiffre toutes les clés master de l’utilisateur dans l’ancien répertoire de clés master, à l’aide du mot de passe précédent, et les stocke dans le répertoire de clés master actuel de l’utilisateur, chiffré avec le mot de passe actuel de l’utilisateur.

Cette fonction doit être appelée à partir du compte d’utilisateur vers lequel les clés sont migrées.

Si cette fonction est en mesure de migrer correctement une ancienne clé master, elle supprime automatiquement l’ancienne clé master. Les clés principales qui ne peuvent pas être déchiffrées ne sont pas supprimées.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête dpapi.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll