【问题标题】:.NET Impersonation not working.NET 模拟不起作用
【发布时间】:2019-01-22 13:17:15
【问题描述】:

我正在使用https://github.com/mj1856/SimpleImpersonation 来模拟管理员,以便我可以从非管理员用户运行的应用程序中更改 Windows 服务。这适用于 Windows 7,没有问题。在 Windows 10 上,我必须右键单击该应用程序并单击以管理员身份运行才能使其工作。否则,当我的应用程序尝试修改服务时,我会收到错误代码 5(权限被拒绝)。模仿似乎正在发挥作用。 UAC 已关闭。我不知道下一步该尝试什么。

【问题讨论】:

  • 当您在 Windows 10 上运行您的应用时,它在任务管理器中的显示效果如何?
  • 如果您希望用户能够控制特定服务,为什么不授予他们这些权限,而不是“好吧,管理员可以做到这一点默认情况下 i>,所以我将首先强制以管理员身份运行”?

标签: c# .net windows


【解决方案1】:

你还没有发布任何你的代码,所以我将在这里做一个有根据的猜测,并建议你试试 LogonType.NewCredentials。这将使 LogonUser 调用缓存凭据,以便稍后用于模拟。

【讨论】:

    【解决方案2】:

    这不起作用的原因是我打开了 UAC。我在 Windows 中禁用了它并重新启动,但显然这还不够。我必须创建注册表项

    reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
    

    然后重新启动以真正禁用 UAC。

    作为对其他开发人员的说明,我无法模拟 c#,但我也无法模拟 powershell 和 psexec,这让我找到了解决方案 PSEXEC, access denied errors

    【讨论】:

      【解决方案3】:

      SimpleImpersonation(我是作者)是the Windows LogonUser API 的托管包装器。它本身没有任何魔力,只是可以帮助您以简单的方式使用该 API。

      当您使用此库时,您传递了一个 LogonType,它与 LogonUser 文档中引用的内容相匹配。每种登录类型都有不同的行为,由操作系统控制。例如,如果您使用LogonType.Interactive,则将LOGON32_LOGON_INTERACTIVE 传递到LogonUser API 以执行交互式登录。

      交互式登录使用 UAC 进行管理操作。 建议禁用它。也不是LogonUser 在交互式会话期间返回 restricted 令牌。对于交互式登录,您无法解决此问题,但您可以根据您的操作尝试其他登录类型之一。

      另见:

      【讨论】:

      • 嗨,马特,我正在尝试使用 SimpleImpersonation 来模拟输入 Windows ID 和密码的用户,并使用该模拟来运行 PowerShell 脚本。这是在 ASP.Net Core WebAPI 上运行的。不幸的是,它仍然使用应用程序池的身份而不是模拟身份。有什么我想念的吗?
      • Impersonation.RunAsUser(credentials, LogonType.NewCredentials, () => { Runspace runSpace = RunspaceFactory.CreateRunspace(); runSpace.Open(); using (PowerShell ps = PowerShell.Create()) { ps.Runspace = runSpace; Collection<PSObject> PSOutput = ps.Invoke(); } }
      • @DurairajVeeraSinnaiah - 嗨。请不要像这样在 cmets 中链接问题。相反,如果您想要社区回复,请create a new Stack Overflow question,或者如果您向我提问,请在the GitHub issue tracker for SimpleImpersonation 中提出问题。谢谢。
      • 另外,我不是模拟所有事情的专家。我只是围绕LogonUser 编写了一个托管包装器。您可能需要更多地基于该底层 API 而不是我的包装器进行搜索。
      猜你喜欢
      • 2020-07-05
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多