Frage

Ich bin mit CredUIConfirmCredentials in Kombination mit CredUIPromptForCredentials .

ich stellen Sie den EXPECT_CONFIRMATION, und wenn die Anmeldeinformationen ist erste zur Verfügung gestellt von der Benutzer den Anruf an CredUIConfirmCredentials kehrt NO_ERROR , wie erwartet.

Doch auf alle nachfolgenden Anrufe an CredUIConfirmCredentials, mit dem gleichen Anmeldeinformationen, ERROR_INVALID_PARAMETER zurückgegeben. Dies wird beschrieben von der SDK-Dokumentation als :

  

Ein Versuch, eine Warte zu bestätigen   Credential fehlgeschlagen, da die   Berechtigungsnachweis enthalten sind ungültig oder   inkonsistente Daten.

, die eher verwirrend ist, da sie genau die gleichen Anmeldeinformationen sind, die ursprünglich erfolgreich gespeichert wurden.

Das gleiche Ergebnis wird zurückgegeben, wenn Sie ein anders Passwort für die gleiche eingeben Nutzername. Was noch mehr ist verwirrend ist, dass die neuen Anmeldeinformationen tatsächlich beibehalten - was, dass der Rückgabewert, um anzuzeigen scheint, ist tatsächlich anzeigt, dass die Anmeldeinformationen beibehalten überschrieben waren - nicht dass es ein Fehler. Bin ich etwas fehlt, oder ist die Dokumentation falsch?


Hintergrund

Sie können die Fenster Berechtigungsnachweis-System zum Speichern von Anmeldeinformationen für die eigene Anwendung verwenden. Sie sagen, Sie von Windows gefragt werden soll für " generic " Anmeldeinformationen für einige " target ":

Pseudo-Code:

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

wird dann Ursache von Windows ein Dialogfeld angezeigt werden:

Es ist dann Ihre Aufgabe, die Anmeldeinformationen zu überprüfen, der Benutzer eingegeben hat. Wenn sie gültig sind, sagen Sie Windows diese durch den Aufruf ConfirmCredentials . Damit soll sichergestellt werden, dass nur gültige Anmeldeinformationen gespeichert werden:

CredUIConfirmCredentials("My Application", true);

Sobald die Anmeldeinformationen als gültig bestätigt worden ist, wird Windows sie in den sicheren Speicher speichern, die Sie über die Systemsteuerung sehen:

Stichwort: credui, CredUIConfirmCredentials

War es hilfreich?

Lösung

fand ich die Antwort: durch Design

CredUIConfirmCredentials einen Fehler zurück „wenn es nichts zu tun“. Das bedeutet:

  • , wenn die Anmeldeinformationen sind die gleichen wie, was bereits in dem Speicher der Anmeldeinformationen
  • der Benutzer hat die Rembember my password Kontrollkästchen nicht überprüfen
  • Sie die CREDUI_FLAGS_EXPECT_CONFIRMATION Flag nicht gesetzt haben

Die Tatsache, dass CredUIConfirmCredentials schlägt fehl, wenn die Anmeldeinformationen die gleichen wie sind, was bereits im Laden auf MSDN dokumentiert. (Ich weiß, es dokumentiert ist, weil ich hinzugefügt

scroll top