2009-05-06 9 views
0

Versuchen, GnuPG mit Delphi (Win32) zu verwenden. Ich brauche eine Datei mit einem solchen Konsolenbefehl zu unterschreiben:GnuPG und CreateProcess in Delphi-Dienst

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

Zuerst habe ich erstellt normale VCL App und wird dafür verwendet CreateProcess Funktion, alles war in Ordnung, aber wenn ich übertragen, dass Code zu meinem Service App , gpg.exe wird mit Code 2 beendet. Vielleicht habe ich etwas verpasst? Irgendwelche Ideen?

aktualisieren

Nur falls jemand ein solches Problem hat. GnuPG speichert Schlüssel in C:\Documents And Settings\<username>\Application Data\gnupg\, aber wenn der Dienst von einem anderen Benutzerkonto (SYSTEM) ausgeführt wird, kann er Ihren Schlüssel nicht finden. GL & HF

Antwort

2

Versuchen Sie dumping stderr und sehen Sie, ob Sie etwas bekommen. Möglicherweise können Sie die Nachricht weiterleiten. Es könnte ein Problem beim Lesen der Passphrase sein. Ich erinnere mich, dass ich die Passphrase in gpg pipen musste, anstatt sie als Parameter anzugeben.

+0

Ja, das war es ziemlich. Ich habe 'clearsign failed: secret key nicht verfügbar' von stdErr ... –

+0

Vielen Dank für Ihren Rat. Bitte, siehe "Update". Vielen Dank! –

+0

Dann müssen Sie auch '--home' angeben. – sybreon

0

Als Service-App (untergeordnet) gibt es keine Shell als übergeordnetes Element, sodass die untergeordneten Apps STDIO einfach nicht verwenden können. Versuch, mit cmd/c oder über shellexecute auszuführen. Oder besser, verwenden Sie ein Programm, das nicht immer stdio erfordert.

Verwandte Themen