>设置: - 我正在尝试通过 ssis 包中的脚本任务中的 C# 代码解密传入文件。下面是生成的命令,当通过可视化工作室中的调试模式执行时,它可以正常工作。此外,使用服务帐户凭据打开视觉工作室。
--homedir C:\Users\serviceaccounntName\AppData\Roaming\gnupg\" --batch --yes --passphrase MyPassphrase -d -o "outputfileName" --always-trust "SourceFileName"
问题: 通过调试模式运行后,通过SQL代理作业也可以正常工作。 但是一旦我从设置了所有这些的远程桌面顶部注销,传入的文件就不再通过 SQl 代理作业解密 并继续执行。我检查了任务管理器,我可以看到在服务帐户用户下运行的 pinentry.exe。为了使它工作,我杀死了任务并从调试模式调试了一个示例文件,该文件将要求输入密码并发布甚至sql代理作业也开始工作。但是一旦我退出,同样的事情就会再次发生。
我尝试在脚本和进程任务中使用没有 --homedir 选项的命令,但相同的行为仍在继续。
谢谢
以下是最终起作用的方法。
- 已确保 gpg 代理会话处于活动状态。为此,我手动运行了一个解密包(调试模式(并输入了密码。
- 从CMD(命令提示符(运行在两个命令下面。 GPG-agent.exe allow-loopback-pinentry GPGCONF – kill gpg-agent
- 我在从我的SSIS进程任务调用的批处理文件中使用以下命令。 @echo OURPASSPHRASE|gpg.exe --batch --pinentry-mode=loopback --passphrase-fd 0 -d -o FILEPath\FileName.txt FilePath\FileName.txt.gpg
(以上所有操作都是使用我们用于运行 sql 作业的服务帐户完成的。
参考下面的链接 https://github.com/carlolars/gnupg2-msys2/issues/1
谢谢 希望对您有所帮助。