给定用户名和密码,如何模拟提升的用户

本文关键字:用户 模拟 密码 何模拟 | 更新日期: 2023-09-27 18:33:06

在 Windows Vista 及更高版本中,LogonUser 返回非特权令牌,即使提供的用户是管理员也是如此。因此,当您使用该令牌进行模拟时,您将无法提升。如果为管理员用户提供正确的用户名和密码,如何运行具有该管理员提升权限的代码?

给定用户名和密码,如何模拟提升的用户

我刚刚用这个例如,它实际上工作正常。我想如果你想在这个上下文中运行代码,你必须通过以下方式设置当前的线程主体:

Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(WindowsIdentity.GetCurrent());

如果您正在编写 Windows 服务,只要要模拟的用户具有"作为服务登录"权限,使用 LOGON32_LOGON_SERVICE 而不是 LOGON32_LOGON_INTERACTIVELOGON32_LOGON_NEW_CREDENTIALS 将产生特权令牌。

这不提供通用解决方案(如果您正在编写面向用户的应用程序,它将不起作用(,但足以解决我遇到的特定问题。