【问题标题】:Is there a way to pass the credentials of the current windows user into LyncClient.Submit()有没有办法将当前 Windows 用户的凭据传递到 LyncClient.Submit()
【发布时间】:2011-03-01 16:40:57
【问题描述】:

我正在创建一个通过 Microsoft Lync API 与 Microsoft Lync Server 交互的 In/Out 系统托盘应用程序。有没有办法将当前 windows 用户的用户名和密码传递给 Lync API,以便用户自动登录,而不是让他们每次都输入凭据?

【问题讨论】:

    标签: c# login credentials suppress lync


    【解决方案1】:

    不,不像例如访问 Web 服务时,无法强制 Lync 使用登录用户凭据。当您第一次在计算机上运行 Lync 客户端时,您可以看到它本身 - 即使您以域用户身份登录到计算机,系统也会提示您输入域凭据。

    不过,所有内容都不会丢失,因为 Lync(默认情况下)会在输入凭据时保存它们,然后在每次以该用户身份登录时将它们呈现给服务器。您可以检查 Lync 是否设置为在注册表中保存密码:

    [HKEY_CURRENT_USER\Software\Microsoft\Communicator]
    "SavePassword"=dword:00000001
    

    要在 API 中利用这一点,您需要:

    1. 以通常的方式初始化客户端
    2. 注册 lyncClient.CredentialRequested 事件
    3. 调用 lyncClient.BeginSignIn,传递登录用户的 sip uri(为方便起见,lyncClient.Uri 属性通常设置为上次登录用户的 uri)。为用户名和密码传递 null。

    现在 - 如果您的用户之前没有登录到 Lync(或您的应用程序),您将收到一个 CredentialRequested 事件。

    1. 使用 CredentialRequestedEventArgs.Cancel() 取消事件
    2. 显示一些 UI 以从用户那里收集用户名和密码,然后使用这些凭据调用 BeginSignIn
    3. 或者,使用 null 用户名和密码调用 BeginSignIn,然后处理 CredentialRequested,并使用 CredentialRequestedEventArgs 中的 Submit 方法将凭据提交给服务器(Submit 方法中的最后一个参数必须设置为 True 才能保存密码)

    (我不记得上面 2 或 3 中的哪种方法是推荐的方法 - 最好都尝试一下,看看哪种方法最幸运)

    下次用户登录时(假设 SavePassword 在注册表中设置为 true),保存的凭据将被传递,因此用户将在没有触发 CredentialRequested 事件的情况下登录。

    This MSDN article 很好地涵盖了该过程(我假设您在 UI 抑制模式下运行 Lync,因为这只是抑制模式下的问题)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-26
      • 2022-10-05
      • 2014-12-17
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多