C# 降级已启动进程的权限

C# 降级已启动进程的权限,c#,process,C#,Process,我需要从另一个应用程序启动一个应用程序。看起来我必须使用shell来完成这项工作(因为我需要能够关闭启动器),但我还想降低授予启动应用程序的权限 这可能吗?启动器必须以管理员身份运行,但我希望启动应用程序以用户身份运行 这是我当前运行流程的方式: Process process = new Process(); process.StartInfo = new ProcessStartInfo(); process.StartInfo.FileName = name; process.Start

我需要从另一个应用程序启动一个应用程序。看起来我必须使用shell来完成这项工作(因为我需要能够关闭启动器),但我还想降低授予启动应用程序的权限

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

这是我当前运行流程的方式:

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

process.Start();
请原谅,我忘了添加几个细节:

  • 我需要在mono上的.NET3.5中运行它
  • 我宁愿不使用本机代码
  • 我需要在管理模式下运行launcher应用程序

这似乎是以前讨论过的,请查看以下内容:

看起来UAC提升严格来说是单向的,所以解决方案有点粗糙,比如代码注入到explorer之类的东西


这似乎是以前讨论过的,请查看以下内容:

看起来UAC提升严格来说是单向的,所以解决方案有点粗糙,比如代码注入到explorer之类的东西


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

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

我将查看“runas”动词。。。要以管理员身份运行,我相信您使用的runas没有参数。我想你可以做相反的事情,请检查这个链接,看看这个答案。它建议我在编辑你的标题的第一时间不要以管理员的身份开始。请参阅“”,其中的共识是“不,他们不应该”。我现在正在测试“不以管理员身份启动”解决方案,问题是如何以提升的权限启动启动器并重定向输出?看来我不能!我会研究“符文”动词。。。要以管理员身份运行,我相信您使用的runas没有参数。我想你可以做相反的事情,请检查这个链接,看看这个答案。它建议我在编辑你的标题的第一时间不要以管理员的身份开始。请参阅“”,其中的共识是“不,他们不应该”。我现在正在测试“不以管理员身份启动”解决方案,问题是如何以提升的权限启动启动器并重定向输出?看来我不能!理论上,我也可以使用最后一个解决方案,因为我不需要捕获outputrundll32.exe似乎不可靠,我必须不幸地放弃codeproject解决方案。如果您将应用程序分为两部分,怎么样?从一个非特权的引导带部分开始。让它启动你的特权部分,然后为你的特权部分添加一些机制,以便与第一个启动另一个应用程序的部分通信。虽然肯定更复杂,但至少应该是可靠的。我现在正在测试“不以管理员身份启动”解决方案,问题是如何以提升的权限启动启动器并重定向输出?看来我不能!理论上,我也可以使用最后一个解决方案,因为我不需要捕获outputrundll32.exe似乎不可靠,我必须不幸地放弃codeproject解决方案。如果您将应用程序分为两部分,怎么样?从一个非特权的引导带部分开始。让它启动你的特权部分,然后为你的特权部分添加一些机制,以便与第一个启动另一个应用程序的部分通信。虽然肯定更复杂,但至少应该是可靠的。我现在正在测试“不以管理员身份启动”解决方案,问题是如何以提升的权限启动启动器并重定向输出?看来我不能!