Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从c运行gpg.exe时出错#_C#_Windows_Windows Services_Gnupg - Fatal编程技术网

C# 从c运行gpg.exe时出错#

C# 从c运行gpg.exe时出错#,c#,windows,windows-services,gnupg,C#,Windows,Windows Services,Gnupg,嗨,我正在尝试使用GPG加密zip,我可以从命令行进行加密。当我将其集成到C#应用程序中时,效果很好。但当我将它与Windows服务集成时,我得到了错误,即gpg2.exe已关闭 以下是例外情况的详细信息 Problem signature: Problem Event Name: APPCRASH Application Name: gpg2.exe Application Version: 0.0.0.0 Application Timestamp: 4fa14f

嗨,我正在尝试使用GPG加密zip,我可以从命令行进行加密。当我将其集成到C#应用程序中时,效果很好。但当我将它与Windows服务集成时,我得到了错误,即gpg2.exe已关闭

以下是例外情况的详细信息

Problem signature:
  Problem Event Name:   APPCRASH
  Application Name: gpg2.exe
  Application Version:  0.0.0.0
  Application Timestamp:    4fa14f63
  Fault Module Name:    StackHash_e51a
  Fault Module Version: 0.0.0.0
  Fault Module Timestamp:   00000000
  Exception Code:   c0000005
  Exception Offset: 00000000
  OS Version:   6.0.6002.2.2.0.272.7
  Locale ID:    1033
  Additional Information 1: e51a
  Additional Information 2: 4c0d4d78887f76d971d5d00f1f20a433
  Additional Information 3: e51a
  Additional Information 4: 4c0d4d78887f76d971d5d00f1f20a433
下面是我用来加密的代码

public bool Encrypt(字符串inRecipient、字符串sourceFile、字符串destinationFile) {

}

我找不到任何使用问题签名的东西。请帮忙


提前谢谢

这很可能是由用户上下文问题引起的。可能运行服务的用户帐户无法访问您试图加密的文件

要测试此理论,请转到服务属性,并在“登录”选项卡中输入您知道有权访问该文件的帐户。最好使用与运行C#应用程序相同的帐户/密码


您还应该确保代码使用的是文件的完整路径进行加密,而不是相对路径

这很可能是由用户上下文问题引起的。可能运行服务的用户帐户无法访问您试图加密的文件

要测试此理论,请转到服务属性,并在“登录”选项卡中输入您知道有权访问该文件的帐户。最好使用与运行C#应用程序相同的帐户/密码


您还应该确保代码使用的是文件的完整路径进行加密,而不是相对路径

如果要使用进程,为什么不直接运行gpg.exe而不是cmd.exe? 我只是为一个项目做了这件事,在做下面的事情时没有遇到任何问题

private static void encrypt()
    {
        //have to list full path, adding to PATH had no effect 
        ProcessStartInfo gpg = new ProcessStartInfo(
            @"C:\Program Files (x86)\GnuPT\GPG\gpg.exe",
            @"--no-options --yes --armor --recipient ""recipient"" --encrypt ""file"""
        );
        Process.Start(gpg);
    }

只需将所有命令行参数作为第二个参数传递。

如果要使用进程,为什么不直接运行gpg.exe而不是cmd.exe? 我只是为一个项目做了这件事,在做下面的事情时没有遇到任何问题

private static void encrypt()
    {
        //have to list full path, adding to PATH had no effect 
        ProcessStartInfo gpg = new ProcessStartInfo(
            @"C:\Program Files (x86)\GnuPT\GPG\gpg.exe",
            @"--no-options --yes --armor --recipient ""recipient"" --encrypt ""file"""
        );
        Process.Start(gpg);
    }

只需将所有命令行参数作为第二个参数传递。

什么是
homeditory
以及您是否作为用户、系统用户等运行服务?什么是
homeditory
以及您是否作为用户、系统用户等运行服务?您好,您说得对,这是用户上下文问题。我已经安装了GPG is my user account,本地管理员无法访问该路径,第二个问题是我已经从我的useraccount创建了GPG密钥,服务无法从管理员帐户找到该密钥。我已经将应用程序用户上下文更改为我的用户帐户,并且成功了!!你好,马克,你是对的,这是一个用户上下文问题。我已经安装了GPG is my user account,本地管理员无法访问该路径,第二个问题是我已经从我的useraccount创建了GPG密钥,服务无法从管理员帐户找到该密钥。我已经将应用程序用户上下文更改为我的用户帐户,并且成功了!!