在命令提示符下输入密码

时间:2013-05-14 04:39:04

标签: command

我在这里遇到了问题。

        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传递给命令提示符? 请建议一个方法 提前致谢

1 个答案:

答案 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