共用方式為


CryptUpdateProtectedState 函式 (dpapi.h)

CryptUpdateProtectedState 函式會在使用者的安全性標識碼 (SID) 變更之後移轉目前使用者的主要密鑰。 當使用者從一個網域移至另一個網域之後,此函式可用來保留加密的數據。

語法

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

參數

[in] pOldSid

包含使用者先前 SID 之 SID 結構的位址。 此 SID 可用來找出舊的主要金鑰。 如果此參數為 NULL,則會移轉目前使用者 SID 的主要金鑰。

此參數或 pwszOldPassword 參數可以是 NULL,但不能同時是兩者。

[in] pwszOldPassword

在變更 SID 之前,包含用戶密碼之 Null 終止 Unicode 字串的指標。 此密碼是用來解密舊的主要密鑰。 如果此參數為 NULL,則會使用目前用戶的密碼。

此參數或 pOldSid 參數可以是 NULL,但不能同時為兩者。

[in] dwFlags

未使用。 必須為零。

[out] pdwSuccessCount

接收成功移轉之主要金鑰數目的 DWORD 變數位址。

[out] pdwFailureCount

接收無法解密之主要金鑰數目的 DWORD 變數位址。

如果無法解密一或多個主要密鑰,則不一定是錯誤。 有些使用者可能擁有過時且無法解密一段時間的主要密鑰。 發生這種情況的其中一種方式是本機用戶的密碼已系統管理重設。

傳回值

如果函式成功,則傳回值為 TRUE

如果函式失敗,傳回值為 FALSE。 如需擴充的錯誤資訊,請呼叫 GetLastError。 某些可能的錯誤碼包括下列各項。

傳回碼 Description
ERROR_INVALID_PARAMETER
其中一個參數包含無效的值。
ERROR_OUTOFMEMORY
發生記憶體配置失敗。
ERROR_ENCRYPTION_FAILED
無法加密舊的密碼。

備註

此函式會使用先前的密碼,解密舊主要密鑰目錄中所有使用者的主要密鑰,並將其儲存在使用者目前的主要密鑰目錄中,並以使用者的目前密碼加密。

您必須從要移轉金鑰的使用者帳戶呼叫此函式。

如果此函式能夠成功移轉舊的主要密鑰,它會自動刪除舊的主要密鑰。 無法解密的主要金鑰不會遭到刪除。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 dpapi.h
程式庫 Crypt32.lib
Dll Crypt32.dll