ProcessStartInfo.UseShellExecute 属性
获取或设置一个值,该值指示是否使用操作系统外壳程序启动进程。
命名空间: System.Diagnostics
程序集: System(在 System.dll 中)
属性值
类型:System.Boolean若要在启动进程时使用外壳程序,则为 true;否则,直接从可执行文件创建进程。默认为 true。
备注
将此属性设置为 false 使您能够重定向输入流、输出流和错误流。
注意:
如果 UserName属性不为 nullNothingnullptrnull 引用(在Visual Basic 中为 Nothing) 或不是一个空字符串,则 UseShellExecute 必须为 false,否则调用Process..::.Start(ProcessStartInfo)方法时将引发InvalidOperationException。
使用操作系统外壳程序启动进程时,可以使用Process组件启动任何文档(可以是与可执行文件关联的、具有默认打开操作的任何注册文件类型),并对该文件执行操作(如打印)。如果UseShellExecute 为 false,则只能使用 Process组件启动可执行文件。
注意:
如果将 ErrorDialog属性设置为 true,则 UseShellExecute 必须为 true。
WorkingDirectory属性的行为在 UseShellExecute 为 true 并当UseShellExecute 为 false 时是不同的。当 UseShellExecute 为 true时,WorkingDirectory属性指定可执行文件的位置。如果WorkingDirectory是空字符串,则认为当前目录包含可执行文件。
当 UseShellExecute 为 false 时,不使用WorkingDire--ctory属性查找可执行文件。相反,该属性会由已启动的进程使用,并且只在新进程的上下文中有意义。
示例
C#
Process compiler = new Process();
compiler.StartInfo.FileName = "csc.exe";
compiler.StartInfo.Arguments = "/r:System.dll/out:sample.exe stdstr.cs";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();
Console.WriteLine(compiler.StandardOutput.ReadToEnd());
compiler.WaitForExit();