正常情况下从一个进程执行一个进程

有没有办法从一个高架启动一个非高架的过程。 我的设置升级,当它完成时,它将启动主应用程序。 由于设置boost,主stream程也将boost,这是不可取的。 什么是最好的解决scheme?

这是一个问题,Vista / Win7似乎没有API来获取您需要调用CreateProcessAsUser()的非特权用户令牌。 我发现的唯一解决方案是使用任务计划程序启动程序。 这并不是很实际。

跳转到一个简单的解决方案是使用一个小的非高架的帮助程序。 它可以反过来启动提升的设置过程,并等待来自该设备的确认,以启动非升高的设置。 握手很简单,可以通过一个有名的互斥体来完成。

要做到这一点,没有黑客的唯一方法是有两个进程(可以在同一个.exe中执行)

实例A用ShellExecute和runas动词启动实例B. B安装时,当它在“完成页面”上启动你的应用程序的时候,它使用某种形式的进程间通信(RPC,共享内存+事件等),告诉它代表它启动一个进程。

这似乎是一个很好的方式来做到这一点,只要你不关心的壳没有运行的情况下(例如可能一些终端服务应用程序的设置,也许,虽然我不知道):

http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/

它得到一个Explorer.exe的接口,它应该在用户的正常上下文中运行,并要求资源管理器代表它执行一个命令。 这只需使用简单的文档化的COM接口即可完成,而不必混淆过程令牌或代码/ DLL注入。