Delphi服务中的GnuPG和CreateProcess

时间:2009-05-06 09:15:32

标签: delphi service pgp gnupg

尝试将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

2 个答案:

答案 0 :(得分:2)

尝试转储stderr,看看你是否得到任何东西。您可能能够将消息传入。阅读密码可能是一个问题。我记得不得不将密码管道输入到gpg中,而不是将其指定为参数。

答案 1 :(得分:0)

作为(服务应用程序的子项),没有shell作为父项,因此子应用程序可能根本无法使用stdio。尝试使用cmd / c或通过shellexecute执行。或者更好的是,使用一个并不总是需要stdio的程序。