当我使用包装器将 Java 应用程序作为 Windows 服务运行时,一切正常,除非应用程序尝试解密文件。它会产生以下错误:
GPG error >> code: 2 >> gpg: encrypted with RSA key, ID ########
gpg decryption failed: secret key not available.
应用程序在不作为服务运行时加密和解密文件没有任何问题。包装器也可以正常工作。
环境变量已在 Windows 注册表中设置并确认,但由于某种原因,系统不会在 key 所在的 Users\AppData\...
目录中查找。
这是一个自动化应用程序,因此没有用于加密或解密文件的密码。
出了什么问题?系统可能在哪里寻找 key ?
最佳答案
我通过更改服务属性解决了上述问题。我采取了以下步骤来解决该问题。
在命令行中输入 services.msc,然后按 Enter 键。它将打开服务窗口。
找到我的服务并右键单击,然后单击“属性”
单击“登录”选项卡,然后单击“此帐户”单选按钮
单击“浏览”按钮,然后输入对象名称以选择“我输入了计算机的用户名”,然后单击“检查名称”按钮,确认用户名后单击“确定”按钮
输入密码和确认密码,然后单击“应用”,单击“确定”通知对话框
停止该服务,然后重新启动该服务,发送加密文件,它就可以正常工作。
为什么我必须这样做,因为当我默认创建服务时,它使用本地系统帐户而不是所有 key 和配置文件所在的我的用户帐户。
现在的问题是或者有人喜欢回答:
如何在 Windows 操作系统中更改或更改本地系统帐户?
关于java - 将 Java 应用程序作为 Windows 7 服务运行时获取 "GPG Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195795/