2011-07-19 13 views
-1

私の問題は、コマンドラインを実行しても解読テキストファイルに何も追加されないということです。 decrypt.txtファイルにテキストを追加して、テキストが書き込まれたかどうかを確認しました。私は最近gpg.exe多くのものをやってきたPGPとC#でファイルを解読する

 System.Diagnostics.ProcessStartInfo psi = 
     new System.Diagnostics.ProcessStartInfo("cmd.exe"); 
     psi.CreateNoWindow = true; 
     psi.UseShellExecute = false; 
     psi.RedirectStandardInput = true; 
     psi.RedirectStandardOutput = true; 
     psi.RedirectStandardError = true; 
     psi.WorkingDirectory = "c:\\"; 

     System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi); 
     string sCommandLine = "echo femme toxin sorghum| gpg.exe --batch --passphrase-fd 0 --decrypt E:\\entemp.txt > E:\\detemp.txt"; 
     process.StandardInput.WriteLine(sCommandLine); 
     process.StandardInput.Flush(); 
     process.StandardInput.Close(); 
     process.WaitForExit(); 
     process.Close(); 
+1

これは表面的にはC#に関連していますが、あなたはpgpに助けを求めていますが、gpgを使用しています...そして実際にはgpgの質問ですので、おそらくスーパーユーザが適切でしょう。 – Josh

答えて

1

...

私はあなたがあなたのファイルにアウトあなたのgpgコマンドの標準をリダイレクトしていると思う...

あなたが望むこともっとこのような何か

echo password123|gpg.exe --yes --batch --passphrase-fd 0 --decrypt --output c:\file.txt c:\file.gpg

あなたが目を行う場合は...あなたのプロセスではなく、cmdを呼び出すと、コマンドを渡しgpg.exeも直接呼び出すことができますしかし、あなたは "エコー"のものを嫌って、--yes ... c:\file.gpgなどをargumentsプロパティに追加します。そして...あなたの最初の入力等、この方法はまた、あなたのgpg.exeのための標準エラー出力およびプロセスの終了コードの代わりに、直接cmd.exeの終了コードを取得する機能を提供しますgpgProc.standardinput.writeline(password123);

のようになりますおそらくそれは助けになるでしょう...

関連する問題