次の方法で共有


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 変数のアドレス。

1 つ以上のマスター キーを暗号化解除できない場合は、必ずしもエラーとは限りません。 一部のユーザーは、マスター キーを所有している可能性があります。このキーは、停滞しており、長い間暗号化を解除できませんでした。 これが発生する 1 つの方法は、ローカル ユーザーのパスワードが管理的にリセットされた場合です。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードには、次のようなものがあります。

リターン コード 説明
ERROR_INVALID_PARAMETER
パラメーターの 1 つに無効な値が含まれています。
ERROR_OUTOFMEMORY
メモリ割り当てエラーが発生しました。
ERROR_ENCRYPTION_FAILED
古いパスワードを暗号化できませんでした。

注釈

この関数は、以前のパスワードを使用して、古いマスター キー ディレクトリ内のすべてのユーザーのマスター キーを復号化し、ユーザーの現在のパスワードで暗号化されたユーザーの現在のマスター キー ディレクトリに格納します。

この関数は、キーが移行されるユーザー アカウントから呼び出す必要があります。

この関数が古いマスター キーを正常に移行できる場合は、古いマスター キーが自動的に削除されます。 暗号化を解除できないマスター キーは削除されません。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー dpapi.h
Library Crypt32.lib
[DLL] Crypt32.dll