Вопрос

Пытаясь использовать 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 и использовал CreateProcess функция, все было в порядке, но когда я перенес этот код в свое сервисное приложение, gpg.exe завершается с кодом 2.Может быть, я что-то пропустил?Есть какие-нибудь идеи?

Обновить

На всякий случай, если у кого-то возникнет такая проблема.GnuPG хранит ключи в C:\Documents And Settings\<username>\Application Data\gnupg\ но когда сервис запускается из другой учетной записи пользователя (СИСТЕМЫ) - он не может найти ваш ключ.GL и HF

Это было полезно?

Решение

Попробуйте сбросить stderr и посмотрите, получите ли вы что-нибудь.Возможно, вам удастся передать это сообщение по каналу.Это может быть проблемой при чтении ключевой фразы.Я вроде как помню, что мне приходилось передавать кодовую фразу в gpg вместо того, чтобы указывать ее в качестве параметра.

Другие советы

Как (дочернее приложение) сервисного приложения, родительской оболочки нет, поэтому дочерние приложения могут просто не иметь возможности использовать stdio.Попытайтесь выполнить с помощью cmd / c или через shellexecute.Или, что еще лучше, используйте программу, которая не всегда требует stdio.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top