将Java应用程序作为Windows 7服务运行时出现“GPG错误”

时间:2011-03-04 15:32:45

标签: java windows-services gnupg encryption

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

  

GPG错误>>代码:2>> gpg:使用RSA密钥加密,ID ########
  gpg解密失败:密钥不可用。

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

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

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

有什么问题?系统可能在哪里寻找密钥?

2 个答案:

答案 0 :(得分:1)

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

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

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

  3. 点击登录标签,然后点击此帐户单选按钮

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

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

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

  7. 为什么我必须这样做,因为默认情况下我创建服务时使用的是本地系统帐户而不是我的用户帐户所在的所有密钥和配置文件。

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

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

答案 1 :(得分:0)

将密钥环添加到C:\ Users \ Default \ AppData \ Roaming \ gnupg文件夹中。显然,localsystem帐户从这里抓取密钥环。