Domanda

CredUIConfirmCredentials in combinazione con CredUIPromptForCredentials .

ho impostato il EXPECT_CONFIRMATION, e quando le credenziali sono prima fornito da l'utente la chiamata a CredUIConfirmCredentials rendimenti NO_ERROR come previsto.

Tuttavia, su tutte le chiamate successive a CredUIConfirmCredentials, con la stessa le credenziali, ERROR_INVALID_PARAMETER viene restituito. Questo è descritto da la docs SDK come :

  

Un tentativo di confermare un'attesa   credenziale non riuscita perché la   credenziale conteneva valida o   dati incoerenti.

che è piuttosto confusa in quanto sono esattamente le stesse credenziali che sono state salvate con successo in origine.

Lo stesso risultato viene restituito se si entra in un diverso la password per lo stesso nome utente. Che cosa è ancora più confusa è che le nuove credenziali sono in realtà persistito - che sembra indicare che il valore di ritorno è in realtà indica che le credenziali persistenti sono stati sovrascritti - non che c'era un errore. Mi sto perdendo qualcosa, o è la documentazione errato?


Sfondo

È possibile utilizzare il sistema di credenziali di finestra per archiviare le credenziali per la propria applicazione. Dite di Windows si desidera richiedere per " generici " credenziali per un po ' " obiettivo ":

pseudo-codice:

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

sarà poi causare Windows per visualizzare una finestra di dialogo:

alt text

E 'quindi il vostro lavoro per controllare le credenziali che l'utente ha inserito. Se sono validi, dici di Windows questo chiamando ConfirmCredentials . Questo per garantire che solo le credenziali valide vengono salvate:

CredUIConfirmCredentials("My Application", true);

Una volta che le credenziali sono stati confermati come validi, Windows li salverà nel negozio sicuro, che si può vedere attraverso il pannello di controllo:

alt text

Parole chiave: credui, CredUIConfirmCredentials

È stato utile?

Soluzione

Ho trovato la risposta: in base alla progettazione

CredUIConfirmCredentials restituirà un errore "quando non c'è niente da fare". Ciò significa:

  • se le credenziali sono le stesse di ciò che è già in archivio credenziali
  • l'utente non controllare la casella di controllo Rembember my password
  • non è stato impostato il flag CREDUI_FLAGS_EXPECT_CONFIRMATION

Il fatto che CredUIConfirmCredentials fallisce quando le credenziali sono le stesse di ciò che è già presente nel negozio documentato su MSDN. (Lo so che è documentato perché ho aggiunto a la pagina di documentazione .)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top