Windows 8 是否可以从Windows 8 Metro风格的应用程序生成子进程?

Windows 8 是否可以从Windows 8 Metro风格的应用程序生成子进程?,windows-8,windows-runtime,createprocess,Windows 8,Windows Runtime,Createprocess,我们希望在Metro风格的应用程序中使用两个遗留实用程序。尝试重新编译并将它们包装到WinRT组件中是浪费时间的,因为它们有非常简单的接口 是否可以从Metro风格的应用程序中生成子进程(将留在沙箱中)?Metro风格的IE似乎能够做到这一点,但我们都知道它是“特殊的”。Metro中没有像SellExecute或createprocess这样的API,因此您无法按原样启动其他程序。 但是,您可以使用协议处理程序。metro应用程序可以注册协议处理程序,或使用现有处理程序。想想http://或ma

我们希望在Metro风格的应用程序中使用两个遗留实用程序。尝试重新编译并将它们包装到WinRT组件中是浪费时间的,因为它们有非常简单的接口


是否可以从Metro风格的应用程序中生成子进程(将留在沙箱中)?Metro风格的IE似乎能够做到这一点,但我们都知道它是“特殊的”。

Metro中没有像SellExecute或createprocess这样的API,因此您无法按原样启动其他程序。
但是,您可以使用协议处理程序。metro应用程序可以注册协议处理程序,或使用现有处理程序。想想http://或mail://启动为该处理程序注册的默认应用程序。如果自定义处理程序尚未注册,则可以使用它们…

您应该能够将流程打包为进程外COM对象,并使用CoCreateInstanceFromApp启动它

要让COM接口的代理/存根正常工作,可能会遇到一些挑战-目前还没有很好的C++/IDL编写经验文档,因此构建代理/存根将很困难,但完全可以做到。

CoCreateInstanceFromApp()仅允许您创建随应用程序打包的进程内COM类。您需要编写进程外WinRT EXE服务器。请参见此示例:


Windows.System.Launcher类。不知道span或sendbox是什么意思,我不怀疑你会发现它缺少。“span”是一个拼写错误,抱歉。sendbox是指此子进程不会发出任何受限的系统调用。不幸的是,Windows.system.Launcher类旨在启动另一个前台应用程序,而不仅仅是另一个进程。请尝试将您的进程打包为进程外COM对象,并使用CoCreateInstanceFromApp