2009-05-06 10 views
0

GnuPGをDelphi(Win32)で使用しようとしています。私は私のサービスアプリケーションにそのコードを移したとき、私は通常のVCLは、アプリケーションフォームを作成し、CreateProcess機能を使用DelphiサービスのGnuPGとCreateProcess

"C:\Program Files\GNU\GnuPG\gpg.exe" -a -u Alex --passphrase secretpassword --yes --clearsign -o C:\Result.asc C:\InputFile.txt

まず、すべてがOKだったが、私は、このようなコンソールコマンドを使用して、いくつかのファイルに署名する必要があります、gpg.exeはコード2で終了します。たぶん私は何かを見逃しましたか?何か案は?

更新

誰かが、このような問題を抱えている念のため。 GnuPGは鍵をC:\Documents And Settings\<username>\Application Data\gnupg\に保存していますが、サービスが別のユーザアカウント(SYSTEM)から実行されている場合、鍵を見つけることができません。 GL & HF

答えて

2

stderrをダンプして何かが得られるかどうかを確認してください。メッセージをパイプすることができるかもしれません。パスフレーズを読むことが問題になる可能性があります。パスフレーズをパラメータとして指定するのではなく、gpgにパイプする必要があることを覚えています。

+0

うん、それはかなりそれだった。私は 'cleararsign failed:stdErrから秘密鍵が利用できませんでした'を取得しました。 –

+0

あなたのアドバイスをいただきありがとうございます。 「更新」を参照してください。ありがとう! –

+0

それから '--home'も指定しなければなりません。 – sybreon

0

サービスアプリケーションの(子)としては、親としてシェルがないため、子アプリケーションは単にstdioを使用できない可能性があります。 cmd/cまたはshellexecute経由で実行しようとしました。または、stdioが必ずしも必要でないプログラムを使用することをお勧めします。

関連する問題