2016-05-04 4 views
4

Ich habe den folgenden Code, wo dieser Verschlüsselungscode funktioniert (Erstellen verschlüsselter Datei), wenn es durch Command Prompt aufgerufen wird und das gleiche funktioniert nicht, wenn es in Console Application ist.GnuPG Verschlüsselung funktioniert nicht mit Prozess Fehler Code 2

var destFilePath = @"D:\test.gpg"; 
var recipient = "[email protected]"; 
var sourceFilePath = @"D:\test.txt"; 
var proc = new Process 
      { 
       StartInfo = new ProcessStartInfo 
       { 
        FileName = "cmd.exe", 
        Arguments = string.Format("gpg2 --output {0} --encrypt --recipient {1} {2}", 
               destFilePath, recipient, sourceFilePath), 
        UseShellExecute = false, 
        RedirectStandardError = true, 
        RedirectStandardInput = true, 
        RedirectStandardOutput = true, 
        CreateNoWindow = true, 
        WorkingDirectory = @"C:\Program Files (x86)\GNU\GnuPG" 
       } 
      }; 

      proc.Start(); 
      proc.WaitForExit(); 
      int rc = proc.ExitCode; 
      proc.Close(); 
      Console.WriteLine(rc.ToString()); 
      Console.ReadKey(); 

die Fehlercode 2 in der Exitcode

Irgendwelche Ideen helfen würde zurückkehrt!

+0

Sie müssen die gpg2 exe nicht cmd.exe – MikeT

+0

Was ist die Fehlermeldung? Warum ignorieren viele Menschen die Fehlermeldungen, die sie erhalten, wenn sie um Hilfe bitten? – ray

+0

auch müssen Sie möglicherweise Ihre Variablen abgrenzen, fügen Sie "" um sie herum – MikeT

Antwort

1

von GPG Error Code 2:

GPG wird gefragt, ob Sie mit dem Verschlüsselungs mit einem unsigned Taste, um fortzufahren möchten. Da kein Benutzer Y eingeben kann, erzeugt es einen Fehler.

Um dies zu beheben, die folgenden Schalter

--yes und --always-trust

sein legte eine Weile her, seit ich verwenden GPG aber die Reihenfolge der Argumente ist in der Regel nicht wichtig, solange sie benannt sind

, die Ihnen so etwas geben würde

FileName = "gpg2.exe", 
Arguments = $"--output {destFilePath} --encrypt --yes --always-trust --recipient {recipient} {sourceFilePath}", 

Hinweis: das ist C# 6 Formatierung, die etwas leichter zu lesen ist

+0

Wo in den Befehl hinzufügen? –