Question

J'utilise en combinaison CredUIConfirmCredentials avec CredUIPromptForCredentials .

I mis le EXPECT_CONFIRMATION, et quand les informations d'identification sont premier fourni par l'utilisateur l'appel à CredUIConfirmCredentials retourne NO_ERROR comme prévu.

Cependant, tous les appels à CredUIConfirmCredentials, avec le même pouvoirs, ERROR_INVALID_PARAMETER est retourné. Ceci est décrit par la SDK docs comme :

  

Une tentative de confirmer une attente   lettres de créance a échoué parce que la   informations d'identification contenu invalide ou   données incohérentes.

ce qui est assez déroutant car ils sont exactement les mêmes informations d'identification qui ont été enregistrés à l'origine avec succès.

Le même résultat est retourné si vous entrez un différent mot de passe pour la même Nom d'utilisateur. Ce qui est encore plus déroutant est que les nouvelles informations d'identification sont effectivement persisté - ce qui semble indiquer que la valeur de retour est indiquant en fait que les pouvoirs ont été écrasés persistantes - non qu'il y avait une erreur. Est-ce que je manque quelque chose, ou est la documentation incorrect?


Arrière-plan

Vous pouvez utiliser le système des titres de compétence de Windows pour stocker les informations d'identification pour votre propre application. Vous dites Windows que vous souhaitez inviter pour " générique " les informations d'identification pour certains " cible ":

pseudo-code:

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

sera alors que Windows pour afficher une boîte de dialogue:

Il est alors votre travail pour vérifier les informations d'identification saisis par l'utilisateur. Si elles sont valides, vous dites de Windows en appelant ConfirmCredentials . Est d'assurer que seules les informations d'identification valides sont enregistrées:

CredUIConfirmCredentials("My Application", true);

Une fois les informations d'identification ont été confirmées comme valides, Windows les enregistrer dans le magasin sécurisé, que vous pouvez voir à travers le Panneau de configuration:

Mots-clés: credui, CredUIConfirmCredentials

Était-ce utile?

La solution

i trouvé la réponse: par la conception

CredUIConfirmCredentials renvoie une erreur « quand il n'y a rien à faire ». Cela signifie:

  • si les informations d'identification sont les mêmes que ce qui est déjà dans le magasin des titres de compétences
  • l'utilisateur ne cochez pas la case à cocher Rembember my password
  • vous n'avez pas défini le drapeau CREDUI_FLAGS_EXPECT_CONFIRMATION

Le fait que CredUIConfirmCredentials échoue lorsque les informations d'identification sont les mêmes que ce qui est déjà dans le magasin documenté sur MSDN. (Je sais qu'il est documenté parce que j'ajouté

scroll top