2017-01-23 1 views
1

bluetooth経由で送信されたイベントを受信するカスタムCredentialProviderを作成しました。 これまでのところすべて正常に動作します。イベントを送信した後、ログイン画面が変更され、ユーザー名の下に単一の「サインイン」ボタンが表示されることを除いては、 this SO-questionへの回答で述べたように は、私は彼が自動ログオンを達成するために、次のでした:Windows CredentialProviderイベントからの自動ログオンにログインボタンが表示されています

HRESULT CMobileCredential2::SetSelected(_Out_ BOOL *pbAutoLogon) 
{ 
    LOG_FUNCTION; 
    *pbAutoLogon = true; 
    return S_OK; 
} 

と私は呼んeventhandlingコードで:

HRESULT hr = _pcpe->CredentialsChanged(_upAdviseContext); 
if (S_OK != hr) 
{ 
    LOG_ERROR("Could not login!"); 
} 

私はときに私LogonUIは自動的に私にログインするだろうと思いましたautologonをtrueに設定しますか?なぜ私は別のボタンをクリックしなければならないのですか?この動作を回避する方法はありますか?

EDIT:

次は、Microsoftから「資格情報プロバイダのテクニカルリファレンス」で発見される:Windowsの10では

、資格プロバイダは、ユーザー 自動ログオンしようとする場合私たちは不適切であるかもしれないと思う、私たちはスピードバンプとして "サインイン"ボタン をペイントするでしょう。

私がここで打っているのは間違いだと思いますが、何が不適切ですか?使用されるパスワードは、大文字と小文字の両方から構成されます。これを浄化する可能性はありますか?

答えて

1

数日後、私は解決策を含むマイクロフォーラムでthis answerを見つけました。

pbAutoLogonがtrueに設定されている場合、Windowsはこの「スピードバンプ」を回避するのに十分なカスタム資格情報を信頼しません。 GetCredentialCountは常にカスタム資格の

GetSerialization(_Out_ CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE *pcpgsr, 
    _Out_ CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION *pcpcs, 
    _Outptr_result_maybenull_ PWSTR *ppwszOptionalStatusText, 
    _Out_ CREDENTIAL_PROVIDER_STATUS_ICON *pcpsiOptionalStatusIcon) 

を呼び出す前に呼び出されたとして、それはそう

GetCredentialCount(
    _Out_ DWORD *pdwCount, 
    _Out_ DWORD *pdwDefault, 
    _Out_ BOOL *pbAutoLogonWithDefault) 

にtrueにpbAutoLogonWithDefaultを設定し、カスタムプロバイダを信頼しかし は、トリックを行うようです。

関連する問題