次の方法で共有


CredUIPromptForWindowsCredentialsA 関数 (wincred.h)

CredUIPromptForWindowsCredentials 関数は、ローカル コンピューターにインストールされている任意の資格情報プロバイダーを使用して資格情報を指定できる構成可能なダイアログ ボックスを作成して表示します。

構文

CREDUIAPI DWORD CredUIPromptForWindowsCredentialsA(
  [in, optional]      PCREDUI_INFOA pUiInfo,
  [in]                DWORD         dwAuthError,
  [in, out]           ULONG         *pulAuthPackage,
  [in, optional]      LPCVOID       pvInAuthBuffer,
  [in]                ULONG         ulInAuthBufferSize,
  [out]               LPVOID        *ppvOutAuthBuffer,
  [out]               ULONG         *pulOutAuthBufferSize,
  [in, out, optional] BOOL          *pfSave,
  [in]                DWORD         dwFlags
);

パラメーター

[in, optional] pUiInfo

この関数が表示するダイアログ ボックスの外観をカスタマイズするための情報を含む CREDUI_INFO 構造体へのポインター。

CREDUI_INFO 構造体の hwndParent メンバーが NULLされていない場合、この関数は親ウィンドウの中央にモーダル ダイアログ ボックスを表示します。

CREDUI_INFO 構造体の hwndParent メンバーが NULL場合、関数は画面の中央にダイアログ ボックスを表示します。

この関数は、CREDUI_INFO 構造体の hbmBanner メンバーを無視します。

[in] dwAuthError

ダイアログ ボックスに表示される Windows エラー コード (Winerror.h で定義)。 以前に収集された資格情報が無効な場合、呼び出し元はこのパラメーターを使用して、資格情報を収集した API (Winlogon など) からこの関数にエラー メッセージを渡します。 対応するエラー メッセージが書式設定され、ダイアログ ボックスに表示されます。 エラー メッセージを表示しない場合は、このパラメーターの値を 0 に設定します。

[in, out] pulAuthPackage

入力時に、このパラメーターの値を使用して、pvInAuthBuffer バッファー内の資格情報をシリアル化する認証パッケージを指定します。 pvInAuthBuffer の値が NULL であり、CREDUIWIN_AUTHPACKAGE_ONLY フラグが dwFlags パラメーターに設定されている場合、指定された認証パッケージの資格情報をシリアル化できる資格情報プロバイダーのみが列挙されます。

入力時にこのパラメーターに使用する適切な値を取得するには、LsaLookupAuthenticationPackage 関数を呼び出し、その関数の AuthenticationPackage パラメーターの値を使用します。

出力時に、このパラメーターは、ppvOutAuthBuffer バッファー内の資格情報をシリアル化する認証パッケージを指定します。

[in, optional] pvInAuthBuffer

ダイアログ ボックスの資格情報フィールドを設定するために使用される資格情報 BLOB へのポインター。 このパラメーターの値を NULL に設定して、資格情報フィールドを空のままにします。

[in] ulInAuthBufferSize

pvInAuthBuffer バッファーのサイズ (バイト単位)。

[out] ppvOutAuthBuffer

出力時に資格情報 BLOB を指定するポインターのアドレス。 Kerberos、NTLM、またはネゴシエート資格情報の場合は、CredUnPackAuthenticationBuffer 関数を呼び出して、この BLOB を資格情報の文字列表現に変換します。

資格情報 BLOB の使用が完了したら、SecureZeroMemory 関数を呼び出してメモリからクリアし、CoTaskMemFree 関数を呼び出して解放します。

[out] pulOutAuthBufferSize

ppvOutAuthBuffer バッファーのサイズ (バイト単位)。

[in, out, optional] pfSave

入力時に、この関数が表示するダイアログ ボックスで [保存] チェック ボックスをオンにするかどうかを指定するブール値へのポインター。 出力時に、このパラメーターの値は、ユーザーがダイアログ ボックスの [送信] ボタンをクリックしたときに[保存]チェック ボックスをオンにしたかどうかを指定します。 [保存] チェック ボックスを無視するには、このパラメーターを NULL 設定します。

dwFlags パラメーターで CREDUIWIN_CHECKBOX フラグが設定されていない場合、このパラメーターは無視されます。

[in] dwFlags

この関数の動作を指定する値。 この値は、ビットごとのまたは次の値の 1 つ以上の組み合わせを できます。

価値 意味
CREDUIWIN_GENERIC
0x1
呼び出し元は、資格情報プロバイダーがプレーン テキストでユーザー名とパスワードを返すように要求しています。

この値を SECURE_PROMPTと組み合わせることはできません。

CREDUIWIN_CHECKBOX
0x2
[保存] チェック ボックスがダイアログ ボックスに表示されます。
CREDUIWIN_AUTHPACKAGE_ONLY
0x10
pulAuthPackage パラメーターで指定された認証パッケージをサポートする資格情報プロバイダーのみを列挙する必要があります。

この値を CREDUIWIN_IN_CRED_ONLYと組み合わせることはできません。

CREDUIWIN_IN_CRED_ONLY
0x20
pulAuthPackage パラメーターで指定された認証パッケージの pvInAuthBuffer パラメーターで指定された資格情報のみを列挙する必要があります。

このフラグが設定され、pvInAuthBuffer パラメーターが NULL場合、関数は失敗します。

この値を CREDUIWIN_AUTHPACKAGE_ONLYと組み合わせることはできません。

CREDUIWIN_ENUMERATE_ADMINS
0x100
資格情報プロバイダーは、管理者のみを列挙する必要があります。 この値は、ユーザー アカウント制御 (UAC) のみを目的としています。 外部の呼び出し元は、このフラグを設定しないことをお勧めします。
CREDUIWIN_ENUMERATE_CURRENT_USER
0x200
pulAuthPackage パラメーターで指定された認証パッケージの受信資格情報のみを列挙する必要があります。
CREDUIWIN_SECURE_PROMPT
0x1000
資格情報ダイアログ ボックスは、セキュリティで保護されたデスクトップに表示されます。 この値を CREDUIWIN_GENERICと組み合わせることはできません。

Windows Vista: この値は、WINDOWS Vista sp1 以降でサポートされています。

CREDUIWIN_PREPROMPTING
0x2000
資格情報ダイアログ ボックスは、SspiPromptForCredentials 関数によって呼び出され、クライアントは前のハンドシェイクの前にプロンプトが表示されます。 pvInAuthBuffer パラメーターにSSPIPFC_NO_CHECKBOXが渡された場合、資格情報プロバイダーはチェック ボックスを表示しません。

Windows Vista: この値は、WINDOWS Vista sp1 以降でサポートされています。

0x40000
資格情報プロバイダーは、AAD 機関名をパックしません。 これは、Azure AD 参加済みデバイスにのみ適用されます。

Windows 10 バージョン 1607: この値は、Windows 10 バージョン 1607 以降でサポートされています。

CREDUIWIN_PACK_32_WOW
0x10000000
資格情報プロバイダーは、プロバイダーが 64 ビット システムで実行されている場合でも、ppvOutAuthBuffer パラメーターが指す資格情報 BLOB を 32 ビット境界に合わせる必要があります。
0x80000000
Windows Hello 資格情報は、スマート カード認証バッファーにパックされます。 これは、顔、指紋、PIN 資格情報プロバイダーにのみ適用されます。

Windows 10 バージョン 1809: この値は、Windows 10 バージョン 1809 以降でサポートされています。

戻り値

関数が成功した場合、関数は ERROR_SUCCESSを返します。 ユーザーが関数を取り消すと、ERROR_CANCELLEDが返されます。 その他の戻り値は、関数が読み込みに失敗したことを示します。

備考

この関数は資格情報を保存しません。

SSPI を使用してユーザーを認証するアプリケーションでは、この関数を呼び出さないでください。 代わりに、SspiPromptForCredentialsを呼び出します。

手記

wincred.h ヘッダーは、CredUIPromptForWindowsCredentials を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincred.h
ライブラリ Credui.lib
DLL Credui.dll