0

ここで問題があります。

        string strDir = @"cd /d d:\dirc";
        string strCmd = @"gpg --output d:\dirop\outputfile.TXT --decrypt d:\dirip\encfile.enc";  
        string strPass = TheWCF.GetPassphrase(); \\Which will return a string value.

        Process pr;
        ProcessStartInfo args = new ProcessStartInfo("cmd.exe");  
        args.RedirectStandardInput = true;
        args.RedirectStandardOutput = true;
        args.UseShellExecute = false;
        args.WindowStyle = ProcessWindowStyle.Normal;
        pr = Process.Start(args);

        pr.StandardInput.WriteLine(strDir);
        Application.DoEvents();
        Thread.Sleep(1000);
        Application.DoEvents();

        pr.StandardInput.WriteLine(strCmd);
        Application.DoEvents();
        Thread.Sleep(1000);
        Application.DoEvents();

ここまではすべて問題ありませんが、この時点で cmd プロンプトはパスフレーズを要求します...ここでコードビハインドからパスフレーズを渡す方法 (ハードコードできない別のサービスから取得したパスフレーズ) 例:

 string strPassPhrase=TheWCF.GetPassphrase();

この strPassPhrase をコマンド プロンプトに渡す方法は? 方法を提案してください よろしくお願いします

4

1 に答える 1

0

これはあまりにも明白かもしれませんが、試してみましたか

pr.StandardInput.WriteLine(strPassPhrase);

Microsoft MSDN ページから:

Process は、標準入力ストリーム (通常はキーボード) から入力テキストを読み取ることができます。StandardInput ストリームをリダイレクトすることにより、プログラムで入力を指定できます。たとえば、キーボード入力を使用する代わりに、指定されたファイルの内容からテキストを提供したり、別のアプリケーションから出力したりできます。参照: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardinput.aspx

実際、それはまさにあなたが望むもののようです...この例のように(上記のリンクの参照からわずかに変更されています):

Dim myStreamWriter As StreamWriter = pr.StandardInput

     ' Prompt the user for input text lines to sort.  
     ' Write each line to the StandardInput stream of 
     ' the sort command. 
     Dim inputText As String 
     Dim numLines As Integer = 0
Do
        pr.WriteLine("Enter a line of text (or press the Enter key to stop):")
        inputText = pr.StandardInput.ReadLine()
        If inputText.Length > 0 Then
           numLines += 1
           myStreamWriter.WriteLine(inputText)
        End If 
     Loop While inputText.Length <> 0
于 2013-05-14T04:46:45.623 に答える