UWP 启动 Win32 控制台应用程序适用于 Process.Start

UWP Starting Win32 Console Application works with Process.Start works

我在 UWP 中使用 WinUI 开始了一个新项目。由于安全原因,我认为使用 Process.Start 启动进程不起作用或不受支持,但是当我启动以下代码片段时,它开始以某种方式工作。

现在的问题是,为什么它有效,或者是否有任何限制,例如我无法将项目中包含的 .exe 部署到 Microsoft Store?

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        Process.Start(@"Tools\example.exe", "--help");
    }
}

项目中包含的可执行文件(生成操作 = None复制到输出目录 = 如果较新则复制):

but when I started the following code snippet it started working somehow.

我用你的代码测试过,它抛出异常The system cannot find the file specified,它在我这边不起作用。您能否介意分享一个示例来解释这一点。

why does it work, or is there any restrictions e.g. that I cannot deploy the .exe that is included in my project to the Microsoft Store?

一般来说,我们经常使用 FullTrustProcessLauncher 从 uwp 启动 win32 应用程序。但是您需要为包项目启用 runFullTrust Restricted 功能。受限功能适用于非常具体的场景。这些功能的使用受到严格限制,并受额外的商店入职政策和审查的约束。请注意,您可以旁加载声明受限功能的应用程序,而无需获得任何批准。只有在将这些应用程序提交到商店时才需要批准。

您可以 运行 .exe .exe 使用 Process.Start API in .NET Windows Fall Creators Update 中的软件包10 及更高版本。

在 Visual Studio 中的项目->属性->应用程序下检查您的应用程序的目标 Min Version。它应该设置为 Windows 10 Fall Creators Update (10.0; Build 16299) 或更高版本。

只要外部组件 (example.exe) 单独认证或符合 Windows 应用认证套件,您就应该能够在商店中发布您的应用。