1

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

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

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

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

process.Start();

原谅我忘了补充几个细节:

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

2 回答 2

1

这似乎之前已经讨论过,请查看:How do you de-elevate rights for a child process

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

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

于 2013-07-01T19:02:30.960 回答
0

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

于 2013-07-22T09:51:52.363 回答