Pregunta

Estoy usando CredUIConfirmCredentials en combinación con CredUIPromptForCredentials .

I establecer el EXPECT_CONFIRMATION, y cuando las credenciales están primero proporcionada por el usuario vuelve a la llamada CredUIConfirmCredentials NO_ERROR como se esperaba.

Sin embargo, en todas las llamadas posteriores a CredUIConfirmCredentials, con el mismo credenciales, ERROR_INVALID_PARAMETER se devuelve. Esto se describe por la docs SDK como :

  

Un intento para confirmar una espera   credencial falló porque el   credencial contenía inválida o   datos inconsistentes.

que es bastante confuso, ya que son exactamente las mismas credenciales que se han guardado con éxito en un principio.

El mismo resultado se devuelve si se introduce un diferente contraseña de la misma nombre de usuario. Lo que es aún más confuso es que las nuevas credenciales son En realidad persistido - lo que parece indicar que el valor de retorno es En realidad lo que indica que las credenciales eran persistido sobrescribe - no que había un error. Me estoy perdiendo algo, o es la documentación incorrecto?


Fondo

Puede utilizar el sistema de credenciales de Ventana para almacenar credenciales para su propia aplicación. Usted le dice a Windows que desea pronta para " genéricos " credenciales para algunos " target ":

pseudo-código:

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

A continuación, la causa de Windows para mostrar un cuadro de diálogo:

alt text

Es entonces su trabajo para comprobar las credenciales ha introducido el usuario. Si son válidos, es decir Ventanas esto llamando a ConfirmCredentials . Esto es para asegurar que sólo las credenciales válidas se guardan:

CredUIConfirmCredentials("My Application", true);

Una vez que las credenciales han sido confirmadas como válidas, Windows guardarlos en el almacén seguro, que se puede ver a través del panel de control:

alt text

Palabras clave: credui, CredUIConfirmCredentials

¿Fue útil?

Solución

He encontrado la respuesta: por diseño

CredUIConfirmCredentials devolverá un error "cuando no hay nada que hacer". Esto significa que:

  • si las credenciales son los mismos que lo que ya está en el almacén de credenciales
  • El usuario no marca la casilla de verificación Rembember my password
  • no configuró la bandera CREDUI_FLAGS_EXPECT_CONFIRMATION

El hecho de que CredUIConfirmCredentials falla cuando las credenciales son los mismos que lo que ya está en la tienda documentado en MSDN. (Sé que es documentado porque he añadido a la página de documentación .)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top