如何在 Windows 中以编程方式切换用户
Posted
技术标签:
【中文标题】如何在 Windows 中以编程方式切换用户【英文标题】:How to switch user programmatically in windows 【发布时间】:2013-09-26 19:48:49 【问题描述】:我想知道是否有任何 API 可用于在 windows 中以编程方式切换用户。我的应用程序在提供用户凭据(帐户名和密码)时将尝试注销任何其他登录的用户并尝试登录当前用户.
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您可能正在寻找的功能是LogonUser
但是,在大多数情况下,您最好使用user impersonation。
就个人而言,我怀疑您可能最好不要使用两种方法,而是简单地使用正在运行的用户的安全上下文,通过您专门为您的应用程序编写的 Windows 服务提供特权功能
【讨论】:
我意识到我在发布此答案后的某个时候犯了一个小错误,LogonUser 是用户假冒的一部分。我不知道是否真的可以通过在 Windows 下提供自定义 GINA 替换来登录,而且我知道 MS 从 Vista 开始改变了它的工作方式 - msdn.microsoft.com/en-us/magazine/cc163489.aspx 我实际上正在寻找 vista 及更高版本。如果用户在登录屏幕,我实际上编写了一个自定义凭据提供程序来登录用户。我想进一步扩展它。【参考方案2】:您为什么不创建一个服务来切换用户凭据(通过其他答案中提到的方法),并以“管理员”身份安装和运行该服务。从登录的用户帐户中,您可以调用此服务(已经以管理员身份运行),并使其切换用户帐户而没有权限问题(因为负责切换的服务已经以管理员身份运行)
【讨论】:
以上是关于如何在 Windows 中以编程方式切换用户的主要内容,如果未能解决你的问题,请参考以下文章
如何在视图控制器中以编程方式切换视图? (Xcode,iPhone)
在 UITableViewController 中以编程方式切换 UITableView