Я использую CredUIPromptForCredentials , чтобы запросить у пользователя учетные данные, которые затем передаются веб-службе.
В приглашении отображается параметр «Запомнить мой пароль», чтобы в имени пользователя и пароле могли использоваться ранее использованные значения.
Когда появляется приглашение и учетные данные предварительно заполнены, я не могу продолжить, пока не выберу имя пользователя из выпадающего списка.
Это экран, который я вижу:
![enter image description here](https://i.stack.imgur.com/pXC2b.png)
Нажатие ОК ничего не делает, кроме как вызвать подсказку «Примеры», но если я выберу «Грег» вручную из раскрывающегося списка, я смогу продолжить.
Вот код, который я использую:
StringBuilder userPassword = new StringBuilder(), userID = new StringBuilder();
CREDUI_INFO credUI = new CREDUI_INFO();
credUI.cbSize = Marshal.SizeOf(credUI);
bool save = true;
CREDUI_FLAGS flags = CREDUI_FLAGS.ALWAYS_SHOW_UI | CREDUI_FLAGS.GENERIC_CREDENTIALS
| CREDUI_FLAGS.SHOW_SAVE_CHECK_BOX ;
//Display password prompt:
CredUIReturnCodes returnCode = CredUIPromptForCredentials
(ref credUI, this.serverName, IntPtr.Zero, 0, userID, 100, userPassword, 100, ref save, flags);
ОС - Windows 7 и Server 2008 r2.
Я создал полный, но простой пример приложения, которое можно загрузить с https://docs.google.com/open?id=0BxSAZ9JlU2w9VHZWWFBjVEhTNG02N1Q4WkFrUkhDUQ для тестирования.