Skip that "CMD.EXE".
This is a common mistake of the beginners who don't understand that CMD.EXE is a "usual" program, no better then yours. You program should be the parent process of your application, but instead, you play the role of the parent process of CMD.EXE, and you want CMD.EXE to play the role of the parent process for some other child process. This is possible, but totally redundant. I understand where it comes from: this is the result of user thinking, non-developer thinking.
All you need is this:
System.Diagnostics.Process.Start("pgp", @"batchmode C:\input.pgp\ -o C:\output.txt\");
System.Diagnostics.Process.Start("pgp", @"batchmode C:\input.pgp -o C:\output.txt");
—SA