尝试将GnuPG与Delphi(Win32)一起使用。我需要使用这样的控制台命令签署一些文件:
"C:\Program Files\GNU\GnuPG\gpg.exe" -a -u Alex --passphrase secretpassword --yes --clearsign -o C:\Result.asc C:\InputFile.txt
首先我创建了普通的VCL Forms App并使用了CreateProcess
函数,一切正常,但是当我将该代码传输到我的服务应用程序时,gpg.exe以代码2退出。也许我错过了什么?有什么想法吗?
更新
万一有人有这样的问题。 GnuPG将密钥存储在C:\Documents And Settings\<username>\Application Data\gnupg\
中,但是当服务从另一个用户帐户(SYSTEM)运行时 - 它找不到您的密钥。 GL&amp; HF
答案 0 :(得分:2)
尝试转储stderr,看看你是否得到任何东西。您可能能够将消息传入。阅读密码可能是一个问题。我记得不得不将密码管道输入到gpg中,而不是将其指定为参数。
答案 1 :(得分:0)
作为(服务应用程序的子项),没有shell作为父项,因此子应用程序可能根本无法使用stdio。尝试使用cmd / c或通过shellexecute执行。或者更好的是,使用一个并不总是需要stdio的程序。