Я использую CredUIConfirmCredentials в сочетании с
CredUIPromptForCredentials .
I установить EXPECT_CONFIRMATION
, а когда учетные данные сначала , предоставленные
пользователь звонит на CredUIConfirmCredentials
возвращает NO_ERROR , как и ожидалось.
Однако при всех последующих вызовах на CredUIConfirmCredentials
, с тем же
учетные данные, ERROR_INVALID_PARAMETER возвращается. Это описано
SDK docs as :
Попытка подтвердить ожидание
учетные данные не удалось, потому что
учетные данные содержат недействительные или
противоречивые данные.
, что довольно запутанно, поскольку они представляют собой те же учетные данные, которые были успешно сохранены изначально.
Тот же результат возвращается, если вы введете другой пароль для одного и того же
имя пользователя. Что еще более запутанно, так это то, что новые учетные данные
на самом деле сохраняется - что, кажется, указывает на то, что возвращаемое значение
фактически указывает на то, что сохраненные учетные данные были перезаписаны - не
что произошла ошибка. Я что-то упустил, или документация
неправильно?
Фон
Вы можете использовать систему учетных данных Window для хранения учетных данных для вашего собственного приложения. Вы сообщаете Windows, что хотите запросить учетные данные « generic » для некоторых « target »:
псевдо-код:
CredUIPromptForCredentials("My Application", ref username, ref password);
приведет к тому, что Windows отобразит диалоговое окно:
Тогда ваша задача - проверить учетные данные, введенные пользователем. Если они действительны, вы сообщаете Windows об этом, вызывая ConfirmCredentials . Это необходимо для сохранения только действительных учетных данных:
CredUIConfirmCredentials("My Application", true);
Как только учетные данные будут подтверждены как действительные, Windows сохранит их в безопасном хранилище, которое вы можете увидеть через Панель управления:
Ключевые слова: credui, CredUIConfirmCredentials