0

CredUIConfirmCredentialsをCredUIPromptForCredentialsと組み合わせ て使用​​しています

設定し、ユーザーが最初EXPECT_CONFIRMATIONにクレデンシャルを提供したときに、を呼び出すと期待どおりにNO_ERRORが返されます。CredUIConfirmCredentials

ただし、CredUIConfirmCredentials同じクレデンシャルを使用した以降のすべての呼び出しで、ERROR_INVALID_PARAMETERが返されます。これは、SDKドキュメントで次のように説明されています。

クレデンシャルに無効または一貫性のないデータが含まれているため、待機中のクレデンシャルを確認しようとして失敗しました。

これは、元々正常に保存されたのとまったく同じクレデンシャルであるため、かなり混乱します。

同じユーザー名に別のパスワードを入力した場合も、同じ結果が返されます。さらに紛らわしいのは、新しいクレデンシャルが実際に永続化されていることです。これは、エラーが発生したことではなく、永続化されたクレデンシャルが実際に上書きされたことを戻り値が示していることを示しているようです。何かが足りないのですか、それともドキュメントが間違っていますか?


バックグラウンド

Windowのクレデンシャルシステムを使用して、独自のアプリケーションのクレデンシャルを保存できます。いくつかの「ターゲット」の「一般的な」クレデンシャルの入力を求めるプロンプトをWindowsに指示します。

擬似コード:

CredUIPromptForCredentials("My Application", ref username, ref password);

次に、Windowsにダイアログボックスが表示されます。

代替テキスト

次に、ユーザーが入力した資格情報を確認するのはあなたの仕事です。それらが有効な場合は、ConfirmCredentialsを呼び出してWindowsにこれを通知します。これは、有効な資格情報のみが保存されるようにするためです。

CredUIConfirmCredentials("My Application", true);

クレデンシャルが有効であることが確認されると、Windowsはそれらをセキュアストアに保存します。これは、コントロールパネルで確認できます。

代替テキスト

キーワード:credui、CredUIConfirmCredentials

4

1 に答える 1

1

私は答えを見つけました:設計による

CredUIConfirmCredentials「何もすることがないとき」というエラーを返します。これの意味は:

  • クレデンシャルがすでにクレデンシャルストアにあるものと同じである場合
  • Rembember my passwordユーザーがチェックボックスをオンにしなかった
  • CREDUI_FLAGS_EXPECT_CONFIRMATIONあなたは旗を立てなかった

CredUIConfirmCredentialsクレデンシャルがMSDNに記載されているストアにすでにあるものと同じである場合に失敗するという事実。(ドキュメントページに追加したので、ドキュメント化されていることはわかっています。)

于 2011-10-26T20:38:47.197 に答える