gpgme_op_export_keys Invalid value



我被调试GPGME所困扰。当我将loglevel旋转到9时,我会得到发生错误的确切位置。

GPGME 2017-06-02 16:25:42 <0x3968>  gpgme_op_export_keys: enter: ctx=08A19D68, mode=0x10, keydata=089C4578
GPGME 2017-06-02 16:25:42 <0x3968>  gpgme_op_export_keys: check: ctx=08A19D68, keys[0] = 089C4190 (9E799EB266729E930BE7A22B7650B73C8AD5436D)
GPGME 2017-06-02 16:25:42 <0x3968>  gpgme_op_export_keys: error: Invalid value <GPGME>

我有一个使用GPGME的C 库。当我在boost中使用库时。测试应用程序不会发生错误。当我在c#应用中使用库时,发生了错误。

我正在做的是从我的钥匙圈中导出私人ASCII装甲钥匙。它总是相同的指纹。我可以从这里去哪里,我需要在GPGME上验证一些东西才能找到差异吗?


编辑:我还有有关该问题的其他信息。我用我的应用程序重新分发了一些GPGME文件。即:libassuan-0.dlllibgpg-error-0.dlllibgpgme-11.dll

当我将整个安装复制到同一文件夹中时,同一调用而没有错误。

这使我相信加载库时有一个背景设置。阅读gpgme_set_global_flag的dokumentation,我可以看到有些条目介绍了gpgconf

我需要出口什么才能允许使用繁荣配置运行我的应用程序?

编辑2:gpgme.log不同于成功的运行到Temprorary文件夹创建中的失败运行。

好:

_gpgme_io_spawn: check: path=00444FB8, CreateProcess ready: hProcess=000005D0, hThread=000005CC, dwProcessID=6184, dwThreadId=16268

坏:

_gpgme_io_spawn: check: path=001850E8, CreateProcess failed: ec=87

两个文件夹都遵循相同的命名方案。我不确定这里发生了什么。

编辑:我慢慢地陷入精神错乱。该设置似乎不是确定性的。偶尔设置功能如预期的。偶尔没有。我确保我有最新的库 - 安装了gpg4win并从那里复制了库 - 现在,调试日志确实不显示调试条目,或者gpg停止寻找路径。现在,当我尝试使用OpenPGP时,它在以后的阶段失败。我侦察原因仍然相同。

标准安装的路径包含空格。

C:Program Files (x86)GNUGnuPGgpgconf.exe

看起来好像是由GPGME正确处理的。看来该路径未包装为CreateProcess调用。

作为一个Hotfix,我将gpgconf.exe添加到了自定义客户端的执行路径中。

gpgme对该文件的检测首先在此路径中。

当调用CreateProcess时,路径中没有空格,呼叫成功。

这只是一个hotfix,因为我的客户现在需要确保他不将我的应用程序安装在带有空格的路径中。


编辑:再次未标记。它工作了很短的时间,现在GPGME已停止致电gpgconf.exe。所以自然现在有一个不同的错误。


....现在一切都很好。

所以我想唯一的falkey体验的解决方案是将整个东西扔到窗外。

最新更新