ProcessStartInfo.UseShellExecute Właściwość

Definicja

Pobiera lub ustawia wartość wskazującą, czy należy używać powłoki systemu operacyjnego do uruchomienia procesu.Gets or sets a value indicating whether to use the operating system shell to start the process.

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

Wartość właściwości

Boolean

true Jeśli powłoka powinna być używana podczas uruchamiania procesu; false Jeśli proces należy utworzyć bezpośrednio z pliku wykonywalnego.true if the shell should be used when starting the process; false if the process should be created directly from the executable file. Wartość domyślna to true .NET Framework aplikacje i false aplikacje platformy .NET Core.The default is true on .NET Framework apps and false on .NET Core apps.

Wyjątki

Podjęto próbę ustawienia wartości true na platforma uniwersalna systemu Windows (platformy UWP).An attempt to set the value to true on Universal Windows Platform (UWP) apps occurs.

Przykłady

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

Uwagi

Ustawienie tej właściwości umożliwia false przekierowywanie strumieni danych wejściowych, wyjściowych i błędów.Setting this property to false enables you to redirect input, output, and error streams.

Słowo "Shell" w tym kontekście ( UseShellExecute ) odnosi się do powłoki graficznej (podobnej do powłoki systemu Windows), a nie powłok poleceń (na przykład bash lub sh ) i umożliwia użytkownikom uruchamianie aplikacji graficznych lub otwartych dokumentów.The word "shell" in this context (UseShellExecute) refers to a graphical shell (similar to the Windows shell) rather than command shells (for example, bash or sh) and lets users launch graphical applications or open documents.

Uwaga

UseShellExecute musi mieć false wartość UserName , jeśli właściwość nie jest null lub jest pustym ciągiem lub InvalidOperationException zostanie wygenerowany, gdy Process.Start(ProcessStartInfo) Metoda zostanie wywołana.UseShellExecute must be false if the UserName property is not null or an empty string, or an InvalidOperationException will be thrown when the Process.Start(ProcessStartInfo) method is called.

W przypadku uruchamiania procesów przy użyciu powłoki systemu operacyjnego można uruchomić dowolny dokument (każdy zarejestrowany typ pliku skojarzony z plikiem wykonywalnym z domyślną akcją Open) i wykonać operacje na pliku, na przykład drukowanie, przy użyciu Process obiektu.When you use the operating system shell to start processes, you can start any document (which is any registered file type associated with an executable that has a default open action) and perform operations on the file, such as printing, by using the Process object. Gdy UseShellExecute tak jest false , można uruchamiać tylko pliki wykonywalne przy użyciu Process obiektu.When UseShellExecute is false, you can start only executables by using the Process object.

Uwaga

UseShellExecute musi być true ustawiona ErrorDialog na wartość właściwości true .UseShellExecute must be true if you set the ErrorDialog property to true.

Jeśli ustawisz wartość WindowStyle na ProcessWindowStyle.Hidden , UseShellExecute należy ustawić wartość true .If you set the WindowStyle to ProcessWindowStyle.Hidden, UseShellExecute must be set to true.

WorkingDirectoryWorkingDirectory

WorkingDirectoryWłaściwość zachowuje się inaczej w zależności od wartości UseShellExecute właściwości.The WorkingDirectory property behaves differently depending on the value of the UseShellExecute property. Gdy UseShellExecute ma wartość true , WorkingDirectory Właściwość określa lokalizację pliku wykonywalnego.When UseShellExecute is true, the WorkingDirectory property specifies the location of the executable. Jeśli WorkingDirectory jest pustym ciągiem, zakłada się, że bieżący katalog zawiera plik wykonywalny.If WorkingDirectory is an empty string, it is assumed that the current directory contains the executable.

Gdy UseShellExecute jest false , WorkingDirectory Właściwość nie jest używana do znajdowania pliku wykonywalnego.When UseShellExecute is false, the WorkingDirectory property is not used to find the executable. Zamiast tego jest używany tylko przez uruchomiony proces i ma znaczenie tylko w kontekście nowego procesu.Instead, it is used only by the process that is started and has meaning only within the context of the new process. W takim przypadku UseShellExecute false FileName Właściwość może być w pełni kwalifikowaną ścieżką do pliku wykonywalnego lub prostą nazwą pliku wykonywalnego, którą system podejmie próbę znalezienia w folderach określonych przez ZMIENNĄ środowiskową Path.When UseShellExecute is false, the FileName property can be either a fully qualified path to the executable, or a simple executable name that the system will attempt to find within folders specified by the PATH environment variable.

Dotyczy

Zobacz też