【问题标题】:downgrade rights of a started process已启动进程的降级权限
【发布时间】:2013-07-01 18:49:25
【问题描述】:

我需要从另一个应用程序启动一个应用程序。看起来我必须使用 shell 来执行此操作(因为我需要能够关闭启动器),但我也想降级授予启动应用程序的权限。

这可能吗?启动器必须以管理员身份运行,但我希望启动应用程序以用户身份运行。

这是我目前运行该过程的方式:

Process process = new Process();
process.StartInfo = new ProcessStartInfo();
process.StartInfo.FileName = name;

process.Start();

请原谅我忘记添加一些细节:

  • 我需要在 .net 3.5 的单声道上运行它
  • 我宁愿不使用本机代码
  • 我需要在管理员模式下运行启动器应用程序

【问题讨论】:

标签: c# process


【解决方案1】:

这个好像之前讨论过,看看这个:How do you de-elevate privileges for a child process

看起来 UAC 提升是严格单向的,所以解决方案有点粗糙,即代码注入资源管理器之类的东西。

http://www.codeproject.com/Articles/18946/High-elevation-can-be-bad-for-your-application-How

【讨论】:

  • 理论上我也可以使用最后一个解决方案,因为我不需要捕获输出
  • rundll32.exe 好像不靠谱,可惜我必须放弃codeproject解决方案。
  • 如果你把你的申请分成两部分怎么样?从一个非特权引导带部分开始。让它启动您的特权部分,然后为您的特权部分添加一些机制,以便与第一个部分进行通信以启动另一个应用程序。虽然肯定更复杂,但至少它应该是可靠的。
  • 我现在正在测试“以非管理员身份启动”解决方案,问题是如何以提升的权限启动启动器并重定向输出?看来我做不到!
【解决方案2】:

最终我决定创建一个引导程序,它可以以管理员身份运行启动器,然后以普通用户身份运行应用程序。启动器完成后,它会返回启动应用程序的引导程序可执行文件。

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2011-11-17
    • 2016-09-29
    • 2011-05-05
    相关资源
    最近更新 更多