首页 > 解决方案 > C# UWP 在我尝试启动进程时出错

问题描述

我正在开发使用 GPG 可执行文件的 UWP 程序。我有以下执行gpg --list-keys并获得结果的代码

public class Gpg
{
    public void gpg()
    {
        Process compiler = new Process();
        compiler.StartInfo.FileName = "gpg";
        compiler.StartInfo.Arguments = "--list-keys";
        compiler.StartInfo.UseShellExecute = false;
        compiler.StartInfo.RedirectStandardOutput = true;
        compiler.Start();
        Console.WriteLine(compiler.StandardOutput.ReadToEnd());
    }
}

我还确认此代码在 .NET Core 控制台应用程序中运行良好。但是,当我在 UWP 程序中使用此代码时。我收到了这个错误:

System.ComponentModel.Win32Exception: '{Illegal System DLL Relocation} 系统 DLL %hs 已在内存中重新定位。应用程序将无法正常运行。发生重定位是因为 DLL %hs 占用了为 Windows 系统 DLL 保留的地址范围。应联系提供 DLL 的供应商以获取新的 DLL'

我在 UWP 可执行文件夹中复制了 gpg.exe 并下载了 C# 的 GPG 库。但是所有的库和尝试都会犯同样的错误。我怀疑它是否无法在 UWP 中启动第二个进程。我不能这样做吗?还是有办法?

标签: c#uwp

解决方案


推荐阅读