ProcessStartInfo.UseShellExecute Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob zum Starten des Prozesses die Betriebssystemshell verwendet werden soll, oder legt diesen fest.

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

Eigenschaftswert

true, wenn beim Starten des Prozesses die Shell verwendet werden soll; false, wenn der Prozess direkt von der ausführbaren Datei aus erstellt werden soll. Der Standardwert ist true für .NET Framework-Apps und false für .NET Core-Apps.

Ausnahmen

Ein Versuch, den Wert für UWP-Apps (Universal Windows Platform) auf true festzulegen, wird unternommen.

Beispiele

// 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

Hinweise

Wenn Sie diese Eigenschaft auf festlegen false , können Sie Eingabe-, Ausgabe- und Fehlerdatenströme umleiten.

Das Wort "Shell" bezieht sich in diesem Kontext (UseShellExecute) auf eine grafische Shell (ähnlich der Windows-Shell) und nicht auf Befehlsshells (z. B. oder sh) und ermöglicht es Benutzern, bash grafische Anwendungen zu starten oder Dokumente zu öffnen.

Hinweis

UseShellExecute muss sein false , wenn die UserName -Eigenschaft nicht null oder eine leere Zeichenfolge ist, oder ein InvalidOperationException wird ausgelöst, wenn die Process.Start(ProcessStartInfo) -Methode aufgerufen wird.

Wenn Sie die Betriebssystemshell zum Starten von Prozessen verwenden, können Sie ein beliebiges Dokument starten (bei dem es sich um einen registrierten Dateityp handelt, der einer ausführbaren Datei zugeordnet ist, die eine Standardaktion zum Öffnen aufweist) und Vorgänge für die Datei ausführen, z. B. drucken, indem Sie das Process -Objekt verwenden. Wenn UseShellExecute ist false, können Sie nur ausführbare Dateien mithilfe des Process -Objekts starten.

Hinweis

UseShellExecute muss sein true , wenn Sie die ErrorDialog -Eigenschaft auf truefestlegen.

WorkingDirectory

Die WorkingDirectory -Eigenschaft verhält sich je nach Wert der UseShellExecute Eigenschaft unterschiedlich. Wenn UseShellExecute ist true, gibt die WorkingDirectory -Eigenschaft den Speicherort der ausführbaren Datei an. Wenn WorkingDirectory eine leere Zeichenfolge ist, wird davon ausgegangen, dass das aktuelle Verzeichnis die ausführbare Datei enthält.

Wenn UseShellExecute ist false, wird die WorkingDirectory -Eigenschaft nicht verwendet, um die ausführbare Datei zu finden. Stattdessen wird es nur von dem prozess verwendet, der gestartet wird und nur im Kontext des neuen Prozesses Bedeutung hat. Wenn UseShellExecute ist false, kann die FileName -Eigenschaft entweder ein vollqualifizierter Pfad zur ausführbaren Datei oder ein einfacher ausführbarer Name sein, den das System in von der PATH Umgebungsvariablen angegebenen Ordnern zu finden versucht. Die Interpretation des Suchpfads hängt vom Betriebssystem ab. Um weitere Informationen zu erfahren, geben Sie HELP PATH oder man sh an einer Eingabeaufforderung ein.

Gilt für:

Weitere Informationen