1

我正在(在我的本地机器上)运行GPG(wingpg ) - 命令行版本。

我在win7的登录名是RoyiN。(所以我有它的个人资料)

当我登录时 - 我已经安装了私有和公共密钥(使用 PKA.exe)。

一切都好。

然后我写了这段代码(正在工作)

  Process proc = new Process();
  proc.StartInfo.FileName = cfg.PGP_Program_FullPath;
  proc.StartInfo.UserName = "Royin";
  proc.StartInfo.Domain = ...;
  proc.StartInfo.Password = ...
  proc.StartInfo.Verb = "runas";
  proc.Start();
 ...

UserName但是,如果我在该字段 中写入-另一个也是我本地计算机上的管理员的用户 - 它会说:

gpg:解密失败:没有密钥

然后我再次换到RoyiN它确实有效

  • 是否为每个用户安装了密钥?有没有办法改变它,所以它将是全球性的?(因此机器上的每个用户都可以使用这些密钥 -无需在每个配置文件下安装密钥)?

  • 这也意味着如果我想允许其他人连接到我的计算机 - 我必须以RoiyN24/7 登录....

有什么解决方法吗?

4

2 回答 2

4

这里发生了两件与运行 gpg 的“人”有关的不同事情。

  • GPG 在默认密钥环文件中搜索密钥,这些文件安装在您的用户配置文件目录中(在名为 的文件夹下.gnupg)。这将是一组文件,例如pubring.gpgsecring.gpg。这部分很容易解决:--secret-keyring "path\to\file"作为参数之一传递,它将将该密钥环文件添加到其搜索路径中。您可能希望首先将其移动到公共可读的位置,例如%ALLUSERSPROFILE%

  • 除此之外,GnuPG 密钥是为一个身份生成并与一个身份相关联的,该身份通常是您的电子邮件地址。接收文件时,数据将指定解密和/或验证完整性所需的密钥的人的身份。加密或签名文件时,您必须告诉 GPG 使用谁的密钥。当您为他人签名或解密发送给您的数据时,将使用您的密钥。您需要确保适当的密钥位于您使用的任何密钥环文件中,无论它在哪里。

如果你给它一个明确的数据位置,那么你在运行 gpg 时不需要真正保持登录状态。只是 gpg 默认情况下会读取登录时设置的当前环境变量,以确定这些东西在哪里。

如果您想在无人值守的情况下运行 GPG,您可能需要指定密钥环文件路径、秘密密钥环文件路径和配置文件路径。您可以指定的完整选项列表位于GPG 配置选项页面。

(您可能想尝试仅从该--homedir选项开始,我认为它会一次性覆盖其他所有内容的默认路径,但您需要对其进行测试以确保。)

于 2012-12-26T14:10:21.083 回答
3

是的,它们是按用户安装的

简单的答案 - 只需导出私钥/公钥对,并为管理员帐户安装它。

虽然,最好使用自己的公钥为您的自动化系统创建一个单独的密钥 - 谁拥有您高度信任的密钥,也会接受这个。

于 2012-12-26T14:05:56.430 回答