我在这里遇到了问题。
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传递给命令提示符? 请建议一个方法 提前致谢
答案 0 :(得分:0)
这可能太明显了,但你试过吗
pr.StandardInput.WriteLine(strPassPhrase);
从Microsoft MSDN页面:
进程可以从其标准输入流中读取输入文本, 通常是键盘。通过重定向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