ProcessStartInfo和UseShellExecute用法

时间:2016-09-19 10:34:23

标签: c#

我使用以下代码在c#应用程序中执行shell命令:

try
{
    Process prc = new Process();
    prc.StartInfo = new ProcessStartInfo();
    prc.StartInfo.FileName = filename;
    prc.StartInfo.Arguments = arg;
    prc.StartInfo.UseShellExecute = false;
    prc.StartInfo.RedirectStandardOutput = true;
    prc.Start();
    prc.StandardOutput.BaseStream.CopyTo(stream);
    prc.WaitForExit();
    } catch (Exception e){
        Console.WriteLine("{0} Exception caught.", e);
}

如果我输入像' ipconfig'或者' whoami'。但是当我进入例如“dir'我得到了:

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified

知道为什么吗?这里的诀窍是什么?

1 个答案:

答案 0 :(得分:4)

由于dir是cmd.exe中的命令,因此您无法自行启动它,但您可以像这样执行它。

System.Diagnostics.Process.Start("CMD.exe","dir");