Fungsi CryptUpdateProtectedState (dpapi.h)

Fungsi CryptUpdateProtectedState memigrasikan kunci master pengguna saat ini setelah pengidentifikasi keamanan (SID) pengguna berubah. Fungsi ini dapat digunakan untuk mempertahankan data terenkripsi setelah pengguna dipindahkan dari satu domain ke domain lain.

Sintaks

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

Parameter

[in] pOldSid

Alamat struktur SID yang berisi SID pengguna sebelumnya. SID ini digunakan untuk menemukan kunci master lama. Jika parameter ini NULL, kunci master untuk SID pengguna saat ini dimigrasikan.

Baik parameter ini atau parameter pwszOldPassword mungkin NULL, tetapi tidak keduanya.

[in] pwszOldPassword

Penunjuk ke string Unicode yang dihentikan null yang berisi kata sandi pengguna sebelum SID diubah. Kata sandi ini digunakan untuk mendekripsi kunci master lama. Jika parameter ini NULL, kata sandi pengguna saat ini akan digunakan.

Parameter ini atau parameter pOldSid mungkin NULL, tetapi tidak keduanya.

[in] dwFlags

Tidak digunakan. Harus nol.

[out] pdwSuccessCount

Alamat variabel DWORD yang menerima jumlah kunci master yang berhasil dimigrasikan.

[out] pdwFailureCount

Alamat variabel DWORD yang menerima jumlah kunci master yang tidak dapat didekripsi.

Ini belum tentu merupakan kesalahan jika satu atau beberapa kunci master tidak dapat didekripsi. Beberapa pengguna mungkin memiliki kunci master yang stagnan dan tidak dapat didekripsi untuk waktu yang lama. Salah satu cara ini dapat terjadi adalah ketika kata sandi pengguna lokal telah diatur ulang secara administratif.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Jika fungsi gagal, nilai yang dikembalikan adalah FALSE. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Beberapa kemungkinan kode kesalahan termasuk yang berikut ini.

Menampilkan kode Deskripsi
ERROR_INVALID_PARAMETER
Salah satu parameter berisi nilai yang tidak valid.
ERROR_OUTOFMEMORY
Terjadi kegagalan alokasi memori.
ERROR_ENCRYPTION_FAILED
Kata sandi lama tidak dapat dienkripsi.

Keterangan

Fungsi ini mendekripsi semua kunci master pengguna di direktori kunci master lama, menggunakan kata sandi sebelumnya, dan menyimpannya di direktori kunci master pengguna saat ini, dienkripsi dengan kata sandi pengguna saat ini.

Fungsi ini harus dipanggil dari akun pengguna tempat kunci dimigrasikan.

Jika fungsi ini berhasil memigrasikan kunci master lama, fungsi ini akan secara otomatis menghapus kunci master lama. Kunci master yang tidak dapat didekripsi tidak dihapus.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header dpapi.h
Pustaka Crypt32.lib
DLL Crypt32.dll