获取或设置一个值,该值指示是否使用操作系统外壳程序启动进程。
命名空间:System.Diagnostics
程序集:System(在 system.dll 中)
/** @property */
public boolean get_UseShellExecute () /** @property */
public void set_UseShellExecute (boolean value)
public function get UseShellExecute () : boolean public function set UseShellExecute (value : boolean)
属性值
若要在启动进程时使用外壳程序,则为 true;否则,直接从可执行文件创建进程。默认为 true。
将此属性设置为 false 使您能够重定向输入流、输出流和错误流。
注意 |
---|
如果 UserName 属性不为 空引用(在 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 时,不使用 WorkingDirectory 属性查找可执行文件。相反,它被已启动的进程使用,并且只在新进程的上下文中有意义。
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();