java - 将 Java 应用程序作为 Windows 7 服务运行时获取 "GPG Error"

标签 java windows-services gnupg encryption

当我使用包装器将 Java 应用程序作为 Windows 服务运行时,一切正常,除非应用程序尝试解密文件。它会产生以下错误:

GPG error >> code: 2 >> gpg: encrypted with RSA key, ID ########
gpg decryption failed: secret key not available.

应用程序在不作为服务运行时加密和解密文件没有任何问题。包装器也可以正常工作。

环境变量已在 Windows 注册表中设置并确认,但由于某种原因,系统不会在 key 所在的 Users\AppData\... 目录中查找。

这是一个自动化应用程序,因此没有用于加密或解密文件的密码。

出了什么问题?系统可能在哪里寻找 key ?

最佳答案

我通过更改服务属性解决了上述问题。我采取了以下步骤来解决该问题。

  1. 在命令行中输入 services.msc,然后按 Enter 键。它将打开服务窗口。

  2. 找到我的服务并右键单击,然后单击“属性”

  3. 单击“登录”选项卡,然后单击“此帐户”单选按钮

  4. 单击“浏览”按钮,然后输入对象名称以选择“我输入了计算机的用户名”,然后单击“检查名称”按钮,确认用户名后单击“确定”按钮

  5. 输入密码和确认密码,然后单击“应用”,单击“确定”通知对话框

  6. 停止该服务,然后重新启动该服务,发送加密文件,它就可以正常工作。

为什么我必须这样做,因为当我默认创建服务时,它使用本地系统帐户而不是所有 key 和配置文件所在的我的用户帐户。

现在的问题是或者有人喜欢回答:

如何在 Windows 操作系统中更改或更改本地系统帐户?

关于java - 将 Java 应用程序作为 Windows 7 服务运行时获取 "GPG Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195795/

相关文章:

java - 使用 Spring 和 Hibernate 从多个表连接中检索数据

c# - Windows 服务,无法从我的安装程序的构造函数中访问 app.config

gnupg - 当未找到 --default-key 时,如何防止 gpg 选择后备 key ?

git - 当你 `git commit --gpg-sign=<key-id>` 时正在签署什么数据?

python - PGP/GPG 签名 Python 代码

java - 为什么有符号字节的大小不等于-128到128?

java - 配置 esapi 缓解 XSS SQLI {GET/POST data} 的完美方法

java - spring paypal api上下文问题

c# - 获取 Windows 服务的禁用状态

c# - 数据库关闭后让 log4net 重新连接数据库