Windows中的QProcess gpg2错误

时间:2015-10-31 14:18:03

标签: gnupg qt5.5

我需要使用Qt使用gpg加密一些文本。 QCA别无选择。 我的功能是在Linux中工作但在Windows中我得到了exitCode 2.

在命令行上使用相同的参数执行gpg2.exe正如预期的那样工作。

QString PGPProcess::encrypt(QString toAddress, QString message)
{

    this->start(QStringList() << "--trust-model always" << "-a" << "-e" << "-r " + toAddress);
    this->waitForStarted(PROCESS_WAIT);
    this->write(message.toUtf8());
    this->waitForBytesWritten(PROCESS_WAIT);
    this->closeWriteChannel();
    this->waitForFinished(PROCESS_WAIT);

    if(this->exitCode()) {
        qDebug() << this->exitCode();
        return message;
    } else {
        return this->readAllStandardOutput();
    }

}

我认为它与closeWriteChannel()有关。命令行必须发送gpg正在加密书面文本的CRTL-D(Linux)。

在Windows中,CTRL-D没有做任何事情,我必须按CTRL-C。 但是在QProcess上调用terminate()也不起作用。

1 个答案:

答案 0 :(得分:0)

好的,只需将参数QStringList更改为以下内容即可...

this->start(QStringList() << "--trust-model" << "always" << "-a" << "-e" << "-r" << toAddress);