2016-11-08 101 views
1

據我所知,當用戶最終按下提交按鈕時,將調用GetSerialization方法來獲取登錄詳細信息。如何從憑證提供者調用提交

我在等待一些外部信號登錄的憑證提供程序,我不希望用戶按提交按鈕。

是否可以觸發Credential Provider的提交事件?

回答

3

我找到了一個辦法。訣竅不是調用submit按鈕,而是使用ICredentialProviderEvents::CredentialsChanged方法。我有一個線程運行,這將最終觸發CredentialsChanged。然後這將啓用一個新的用戶登錄憑據。

這顯示在Microsoft示例SampleHardwareEventCredentialProvider中。

值得注意的是,Windows LogonUI自動選擇這個新的憑據。我不知道這是否在文檔中,但這是我所經歷的行爲。

+0

您是否已將此線程運行在單獨的服務中,或者您是否在自定義憑據提供程序中啓動了線程?當我嘗試在我的憑證提供程序的輪詢線程內等待外部信號時,UI開始閃爍,就好像它在每個循環中重新加載憑證提供程序一樣。 – roberth

+0

我開始等待外部信號的新線程,然後調用'CredentialsChanged'。 根據我的經驗,閃爍和重新加載意味着發生了一些無效訪問(或其他錯誤)。在調試器中運行它會很有用。我這樣做的方式是運行一個單獨的程序,該程序基本上使用'CoCreateInstance'創建COM對象並調用'ICredentialProvider'方法。 – cd611

+0

謝謝@ cd611,我會盡力的。 – roberth

相關問題