私は興味深い状況があります。コマンドラインからプログラムを実行しようとしていて、何らかの理由で入力をプログラムでリダイレクトできません。私が実行している実行可能ファイルが呼び出されます。 Spideroakone.exe。この実行可能ファイルはパスワードを要求します。私がパスワードを入力すると、パスワードが "asd"と言うことができます。実際に私がプレーンテキストで入力しているものを見ることができます。C#リダイレクト入力コンソールアプリケーションが動作しません
cmd /c Spideroakone.exe
が再び私はパスワードの入力を求められます同じを参照してください。私はそのような実行可能ファイルを実行した場合
'asd' is not recognized as an internal or external command ...
:私は、エラーメッセージが表示されます。それから私はasdとタイプします。しかし、私は何を入力しているのかわかりませんし、パスワードは機能しており、エラーはありません。
私がしたいことは、Spideroak.exeを実行し、標準入力にパスワードを渡すアプリケーションを作成することです。しかし、Spideroakの奇妙な動作のために私はそれに標準入力を渡すことができず、標準出力を読むこともできません。それをしようとすると、私のアプリはwritelineコマンドでブロックされます。私はstdoutの中に "Password:"という言葉を見たかったでしょう。私はいくつかの非同期の例とマルチスレッドを試みましたが、そのようなものではありません。標準出力バッファは常に空です。私はそれが書かれているstdoutに書かれていない場合、私は "パスワード:"見ているこのテキストは何ですか?
これは私が使用するコードです。 ReadToEnd()
行のどのブロック。この正確なコードは、私はこれは私が私が実行しようとしている実行可能ファイルが奇妙な方法で書かれていると思わせるが、コマンドラインウィンドウで、それが正常に動作製のコンソールアプリで正常に動作します:
Process myProcess = new Process();
myProcess.StartInfo.FileName = @"c:\windows\system32\cmd.exe";
myProcess.StartInfo.Arguments = @"/c ""C:\Program Files\SpiderOakONE\SpiderOakONE.exe"" --headless";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
string s = myProcess.StandardOutput.ReadToEnd();
myProcess.WaitForExit();
これは、正確なデバッグウィンドウのスクリーンショットとラインそのブロックの上:
:これは私がコマンドラインウィンドウに表示するものです
[mcve](https://stackoverflow.com/help/mcve)を提供するための質問を編集してください。 –
現在開かれているcmdの出力をファイルにリダイレクトする方法も知っていますか。私が入力すると、 asdf コマンドプロンプトにメッセージが表示されます。 '...内部または外部のコマンドとして認識されません...' このメッセージをファイルで見たいですか?誰がそれをどうやって行うのですか?それは私の問題に関連するかもしれません。 –
それはそうではありません。これは、エラー出力が標準出力と異なるためです。 –