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 |
---|---|
|
其中一個參數包含無效的值。 |
|
發生記憶體配置失敗。 |
|
無法加密舊的密碼。 |
備註
此函式會使用先前的密碼,解密舊主要密鑰目錄中所有使用者的主要密鑰,並將其儲存在使用者目前的主要密鑰目錄中,並以使用者的目前密碼加密。
您必須從要移轉金鑰的使用者帳戶呼叫此函式。
如果此函式能夠成功移轉舊的主要密鑰,它會自動刪除舊的主要密鑰。 無法解密的主要金鑰不會遭到刪除。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | dpapi.h |
程式庫 | Crypt32.lib |
Dll | Crypt32.dll |