2017-01-23 3 views
1

Ich habe einen benutzerdefinierten CredentialProvider geschrieben, der Ereignisse überwacht, die über Bluetooth gesendet wurden. Bis jetzt funktioniert alles gut. Abgesehen von der Tatsache, dass sich nach dem Senden des Ereignisses der Anmeldebildschirm ändert und eine einzelne Schaltfläche "Anmelden" unterhalb des Benutzernamens angezeigt wird. Wie in den Antworten auf this SO-question erklärte ich habe er die automatische Anmeldung zu erreichen folgendes:Windows CredentialProvider Autologon via Ereignis zeigt immer noch Login-Button

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

und im Ereignisbehandlung Code, den ich nennen:

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

Ich dachte, dass die LogonUI mich automatisch in, wenn ich log würde setze autologon auf wahr? Warum muss ich auf eine andere Schaltfläche klicken? Gibt es eine Möglichkeit, dieses Verhalten zu vermeiden?

EDIT:

finden Sie in der "Credential Provider Technical Reference" von Microsoft zu finden:

In Windows 10, wenn ein Credential Provider will der Benutzer die automatische Anmeldung wo wir denken, dass unangemessen sein könnte, malen wir einen "Anmelden" Knopf als eine Geschwindigkeitsschwelle.

Ich denke, das ist der Punkt, den ich hier treffe, aber was ist unangemessen? Das verwendete Passwort besteht aus Groß- und Kleinbuchstaben sowie einigen Zahlen. Gibt es eine Möglichkeit, dies zu umgehen?

Antwort

1

Nach ein paar Tagen Suche stolperte ich über this answer in den Microsoft-Foren, die die Lösung enthielten.

Offenbar vertraut Windows den benutzerdefinierten Anmeldeinformationen nicht genug, um diese "Geschwindigkeitsschwelle" zu umgehen, wenn pbAutoLogon in SetSelected(_Out_ BOOL *pbAutoLogon) auf True festgelegt ist. jedoch den benutzerdefinierten Anbieter vertraut, so pbAutoLogonWithDefault auf true in

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

Einstellung scheint den Trick zu tun, als GetCredentialCount immer vor

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) 

der benutzerdefinierten Anmeldeinformationen Aufruf aufgerufen wird.

Verwandte Themen