我使用CredUIPromptForCredentials来提示用户输入凭证,然后将凭证传递给Web服务。CredUIPromptForCredentials强制手动选择用户名
提示符显示“记住我的密码”选项,以便可以使用先前使用的值填充用户名和密码。
当出现提示并且预填充凭据时,我无法继续,直到我实际从下拉列表中选择用户名。
这是我看到的画面:
单击确定,什么也不做,但弹出例子小费,但如果我手动从下拉列表中选择“格雷格”,我能继续。
下面是我使用的代码:
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下载进行测试。
,我认为它不是通过改变密码每次运行IM能够登录 – Raghuveer 2012-03-01 10:02:54
:示例应用程序假定密码是正确的 - 它应该让你继续无论你输入密码的。 – Raghuveer 2012-03-01 10:10:25
@RaghuveerGuthikonda保存密码 – 2012-03-01 11:01:39