Pergunta

estou a usar CredUIConfirmCredenciais em combinação comCredUIPromptForCredentials.

EU colocou o EXPECT_CONFIRMATION, e quando as credenciais são primeiro Fornecido pelo usuário a chamada para CredUIConfirmCredentials retorna NO_ERROR como esperado.

No entanto, em todas as chamadas subsequentes para CredUIConfirmCredentials, com as mesmas credenciais, ERROR_INVALID_PARAMETER é retornado.Isto é descrito por o SDK docs como:

Uma tentativa de confirmar uma credencial de espera falhou porque a credencial continha dados inválidos ou inconsistentes.

o que é bastante confuso, pois são exatamente as mesmas credenciais que foram salvas originalmente com sucesso.

O mesmo resultado é retornado se você inserir um diferente Senha para o mesmo nome de usuário.O que é ainda mais confuso é que as novas credenciais são realmente persistidas - o que parece indicar que o valor de retorno está realmente indicando que as credenciais persistidas foram substituídas - não que houve um erro.Estou perdendo alguma coisa ou a documentação está incorreta?


Fundo

Você pode usar o sistema de credenciais do Windows para armazenar credenciais para seu próprio aplicativo.Você diz ao Windows que deseja solicitar "genérico"credenciais para alguns"alvo":

pseudo-código:

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

fará com que o Windows exiba uma caixa de diálogo:

alt text

É então sua função verificar as credenciais que o usuário inseriu.Se eles forem válidos, você informa isso ao Windows ligando para Confirmar credenciais.Isso é para garantir que apenas credenciais válidas sejam salvas:

CredUIConfirmCredentials("My Application", true);

Assim que as credenciais forem confirmadas como válidas, o Windows as salvará no armazenamento seguro, que você pode ver no Painel de Controle:

alt text

Palavras-chave:credui, CredUIConfirmCredentials

Foi útil?

Solução

encontrei a resposta:por design

CredUIConfirmCredentials retornará um erro "quando não houver nada para fazer".Isso significa:

  • se as credenciais forem iguais às que já estão no armazenamento de credenciais
  • o usuário não verificou o Rembember my password caixa de seleção
  • você não definiu o CREDUI_FLAGS_EXPECT_CONFIRMATION bandeira

O fato de que CredUIConfirmCredentials falha quando as credenciais são as mesmas que já estão no armazenamento documentado no MSDN.(eu sei que está documentado porque adicionei a página de documentação.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top