GnuPG加密无法使用,出现进程错误代码2

4

我有以下代码,当它通过命令提示符调用时,这个加密代码可以很好地工作(创建加密文件),但当它在控制台应用程序中运行时,它无法正常工作。

var destFilePath = @"D:\test.gpg";
var recipient = "test@test.com";
var sourceFilePath = @"D:\test.txt";
var proc = new Process
           {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "cmd.exe",
                    Arguments = string.Format("gpg2 --output {0} --encrypt --recipient {1} {2}",
                                                destFilePath, recipient, sourceFilePath),
                    UseShellExecute = false,
                    RedirectStandardError = true,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true,
                    WorkingDirectory = @"C:\Program Files (x86)\GNU\GnuPG"
                }
            };

            proc.Start();
            proc.WaitForExit();
            int rc = proc.ExitCode;
            proc.Close();
            Console.WriteLine(rc.ToString());
            Console.ReadKey();

返回ExitCode中的错误代码2。

有任何想法都会有所帮助!


你需要调用 gpg2.exe 而不是 cmd.exe。 - MikeT
@MikeT,即使更改为 gpg2.exe,它仍无法工作。 - user1618825
@ray,我没有收到任何错误信息。 - user1618825
1
@MikeT,控制台输出为2 - user1618825
1
请看这里:https://dev59.com/bFjUa4cB1Zd3GeqPPj8m - MikeT
显示剩余6条评论
1个回答

2
来自GPG错误代码2
GPG正在询问您是否要继续使用未签名密钥进行加密。由于没有用户可以输入Y,它会产生错误。
要解决此问题,请添加以下开关: --yes 和 --always-trust
我已经有一段时间没有使用GPG了,但通常参数的顺序并不重要,只要它们被命名即可。
这将给您类似以下的结果:
FileName = "gpg2.exe",
Arguments = $"--output {destFilePath} --encrypt --yes --always-trust --recipient {recipient} {sourceFilePath}",

注意:这是C#6格式化,稍微容易阅读一些。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接