【问题标题】:Show Windows' user switching screen显示 Windows 的用户切换屏幕
【发布时间】:2015-11-26 13:06:54
【问题描述】:

我想做(以编程方式,使用 WinAPI)与单击“开始”菜单中的“切换用户”时 Windows 所做的完全相同。即,要显示列出所有可用用户帐户的屏幕,您可以切换到另一个仍然像以前一样登录的帐户。据我所知,它被称为“快速用户切换”。我没有凭据,我的任务是让我的应用用户使用他们自己的凭据切换到另一个帐户。

另外,有没有办法知道是否在“开始”菜单中启用了该选项?因为如果不是,我也不想在我的应用中显示该选项。

更新

我已经使用::ExitWindowsEx()进行注销,但是没有EWX_标志用于切换。

问候,

【问题讨论】:

  • 为什么用户不能自己做呢?当现有 UI 运行良好时,为什么另一个应用需要提供更多 UI?
  • @DavidHeffernan 答案很简单:适用于特殊硬件/用例的替代启动器。
  • 如果您想替换默认的 Windows 屏幕,您可以编写自定义 GINA 模块 msdn.microsoft.com/en-us/library/windows/desktop/…。否则,根据remkoweijnen.nl/blog/2008/11/26/…,启动Windows 默认快速用户切换屏幕似乎需要调用默认Microsoft GINA 上未记录的ShellStartCredentialServer 函数。不用说,调用未记录的 API 是个坏主意。啊,从 Vista 开始就没有 GINA 了。
  • @PeterK 谢谢,ShellStartCredentialServer 似乎是我要找的。必须先检查一下。
  • 呃,吉娜?那已经死了 10 年了。

标签: winapi switch-user


【解决方案1】:

听起来你想要WTSDisconnectSession() 函数:

断开登录用户与指定远程桌面的连接 服务会话而不关闭会话。如果用户随后 登录到同一个远程桌面会话主机(RD 会话主机) 服务器,用户重新连接到同一个会话。

你可以这样使用它:

WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, FALSE);

【讨论】:

  • 完美运行。谢谢。
  • 顺便说一句,它不适用于在 Oracle VirtualBox 下运行的多个虚拟机。如果您在虚拟机上测试解决方案,请记住这不是真正的问题。
猜你喜欢
  • 2021-01-03
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多