ProcessStartInfo.UseShellExecute Propiedad

Definición

Obtiene o establece un valor que indica si se va a usar el shell del sistema operativo para iniciar el proceso.

public:
 property bool UseShellExecute { bool get(); void set(bool value); };
public bool UseShellExecute { get; set; }
member this.UseShellExecute : bool with get, set
Public Property UseShellExecute As Boolean

Valor de propiedad

Boolean

true si el shell se debe usar al iniciar el proceso; false si el proceso debería crearse directamente desde el archivo ejecutable. El valor predeterminado es true en .NET Framework aplicaciones y false en aplicaciones de .NET Core.

Excepciones

Se produce un intento de establecer el valor en true en aplicaciones de la Plataforma Universal de Windows (UWP).

Ejemplos

// Run "cl.exe /cld stdstr.cpp /link /out:sample.exe". UseShellExecute is false because we're specifying
// an executable directly and in this case depending on it being in a PATH folder. By setting
// RedirectStandardOutput to true, the output of cl.exe is directed to the Process.StandardOutput stream
// which is then displayed in this console window directly.    
Process^ compiler = gcnew Process;
compiler->StartInfo->FileName = "cl.exe";
compiler->StartInfo->Arguments = "/clr stdstr.cpp /link /out:sample.exe";
compiler->StartInfo->UseShellExecute = false;
compiler->StartInfo->RedirectStandardOutput = true;
compiler->Start();

Console::WriteLine( compiler->StandardOutput->ReadToEnd() );

compiler->WaitForExit();
// Run "csc.exe /r:System.dll /out:sample.exe stdstr.cs". UseShellExecute is false because we're specifying
// an executable directly and in this case depending on it being in a PATH folder. By setting
// RedirectStandardOutput to true, the output of csc.exe is directed to the Process.StandardOutput stream
// which is then displayed in this console window directly.
using (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();
}
' Run "vbc.exe /reference:Microsoft.VisualBasic.dll /out:sample.exe stdstr.vb". UseShellExecute is False 
' because we're specifying an executable directly and in this case depending on it being in a PATH folder. 
' By setting RedirectStandardOutput to True, the output of csc.exe is directed to the Process.StandardOutput 
' stream which is then displayed in this console window directly.    
Using compiler As New Process()
    compiler.StartInfo.FileName = "vbc.exe"
    compiler.StartInfo.Arguments = "/reference:Microsoft.VisualBasic.dll /out:sample.exe stdstr.vb"
    compiler.StartInfo.UseShellExecute = False
    compiler.StartInfo.RedirectStandardOutput = True
    compiler.Start()

    Console.WriteLine(compiler.StandardOutput.ReadToEnd())

    compiler.WaitForExit()
End Using

Comentarios

Establecer esta propiedad en false le permite redirigir los flujos de entrada, salida y error.

La palabra "shell" en este contexto (UseShellExecute) hace referencia a un shell gráfico (similar al shell de Windows) en lugar de shells de comandos (por ejemplo, bash o sh) y permite a los usuarios iniciar aplicaciones gráficas o abrir documentos.

Nota

UseShellExecute debe ser false si la UserName propiedad no null es o una cadena vacía, o se producirá una InvalidOperationException excepción cuando se llame al Process.Start(ProcessStartInfo) método .

Al usar el shell del sistema operativo para iniciar procesos, puede iniciar cualquier documento (que sea cualquier tipo de archivo registrado asociado a un ejecutable que tenga una acción abierta predeterminada) y realizar operaciones en el archivo, como imprimir, mediante el Process objeto . Cuando UseShellExecute es false, solo puede iniciar ejecutables mediante el Process objeto .

Nota

UseShellExecute debe ser true si establece la ErrorDialog propiedad en true.

Si establece en WindowStyle ProcessWindowStyle.Hidden, UseShellExecute debe establecerse en true.

WorkingDirectory

La WorkingDirectory propiedad se comporta de forma diferente según el valor de la UseShellExecute propiedad. Cuando UseShellExecute es true, la WorkingDirectory propiedad especifica la ubicación del ejecutable. Si WorkingDirectory es una cadena vacía, se supone que el directorio actual contiene el ejecutable.

Cuando UseShellExecute es false, la WorkingDirectory propiedad no se usa para buscar el archivo ejecutable. En su lugar, solo lo usa el proceso que se inicia y tiene significado solo dentro del contexto del nuevo proceso. Cuando UseShellExecute es false, la FileName propiedad puede ser una ruta de acceso completa al ejecutable o un nombre ejecutable simple que el sistema intentará buscar dentro de las carpetas especificadas por la variable de entorno PATH.

Se aplica a

Consulte también