GnuPG и CreateProcess в сервисе Delphi - PullRequest
0 голосов
/ 06 мая 2009

Попытка использовать 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\, но когда служба запускается из другой учетной записи пользователя (SYSTEM) - она ​​не может найти ваш ключ. GL & HF

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

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

0 голосов
/ 06 мая 2009

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

...