【问题标题】:Execute user-privileged task from elevated application从提升的应用程序执行用户特权任务
【发布时间】:2014-01-29 14:12:10
【问题描述】:

我有一个以管理权限运行的应用程序。 使用应用程序清单自动提升权限。

  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  </requestedPrivileges>

从这个应用程序中,我必须以启动应用程序的用户身份执行一些代码,但没有提升。 我怎样才能实现它?

【问题讨论】:

  • 你必须实现一个方法to impersonate the current user
  • 模拟将起作用,但重新架构可能更简洁,以便应用程序无需提升即可启动,创建自身的提升副本以执行管理任务。 (如果不出意外,这意味着父进程可以在命令行上将其 PID 传递给子进程,从而避免您试图找出要模拟的进程。)

标签: c# windows windows-8 uac privilege-elevation


【解决方案1】:

您可以使用impersonation 来达到预期的效果。为了在没有密码的情况下模拟当前用户,您需要找到该用户已运行的另一个进程并从中获取令牌。 Explorer 对此有好处。 Here 是完整的示例代码。

【讨论】:

  • 模拟需要用户密码,对吧?我可以不每次都提示用户输入密码吗?
猜你喜欢
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 2014-07-15
  • 2017-11-19
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多