ProcessStartInfo.UseShellExecute Свойство

Определение

Получает или задает значение, позволяющее определить, нужно ли использовать оболочку операционной системы для запуска процесса.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

Значение свойства

Boolean

Значение true, если оболочка должна использоваться при запуске процесса; значение false, если процесс должен создаваться непосредственно из исполняемого файла.true if the shell should be used when starting the process; false if the process should be created directly from the executable file. Значение по умолчанию — true в приложениях .NET Framework и false в приложениях .NET Core.The default is true on .NET Framework apps and false on .NET Core apps.

Исключения

Выполняется попытка задать значение для true в приложениях универсальной платформы Windows (UWP).An attempt to set the value to true on Universal Windows Platform (UWP) apps occurs.

Примеры

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

Комментарии

Присвоение этому свойству значения false позволяет перенаправлять потоки ввода, вывода и ошибки.Setting this property to false enables you to redirect input, output, and error streams.

Слово «Shell» в данном контексте ( UseShellExecute ) относится к графической оболочке (аналогично оболочке Windows), а не оболочкам команд (например, bash или sh ) и позволяет пользователям запускать графические приложения или открытые документы.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.

Примечание

UseShellExecute значение должно быть false UserName , если свойство не является null пустой строкой, или InvalidOperationException при вызове метода будет выдаваться исключение Process.Start(ProcessStartInfo) .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.

При использовании оболочки операционной системы для запуска процессов можно запустить любой документ (который является любым зарегистрированным типом файла, связанным с исполняемым файлом, имеющим действие по умолчанию) и выполнять операции с файлом, например печать, с помощью Process объекта.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. Если UseShellExecute имеет значение false , можно запускать только исполняемые файлы с помощью Process объекта.When UseShellExecute is false, you can start only executables by using the Process object.

Примечание

UseShellExecutetrueЕсли для свойства задано значение ErrorDialog true .UseShellExecute must be true if you set the ErrorDialog property to true.

Если параметру присвоено значение, то для параметра WindowStyle ProcessWindowStyle.Hidden UseShellExecute должно быть задано значение true .If you set the WindowStyle to ProcessWindowStyle.Hidden, UseShellExecute must be set to true.

WorkingDirectoryWorkingDirectory

WorkingDirectoryСвойство ведет себя по-разному в зависимости от значения UseShellExecute Свойства.The WorkingDirectory property behaves differently depending on the value of the UseShellExecute property. Если UseShellExecute имеет значение true , WorkingDirectory свойство указывает расположение исполняемого файла.When UseShellExecute is true, the WorkingDirectory property specifies the location of the executable. Если WorkingDirectory параметр является пустой строкой, предполагается, что текущий каталог содержит исполняемый файл.If WorkingDirectory is an empty string, it is assumed that the current directory contains the executable.

Если UseShellExecute параметр имеет значение false , WorkingDirectory свойство не используется для поиска исполняемого файла.When UseShellExecute is false, the WorkingDirectory property is not used to find the executable. Вместо этого он используется только запущенным процессом и имеет смысл только в контексте нового процесса.Instead, it is used only by the process that is started and has meaning only within the context of the new process. Если UseShellExecute имеет значение false , FileName свойство может быть либо полным путем к исполняемому файлу, либо простым именем исполняемого файла, которое система будет пытаться найти в папках, заданных переменной среды 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.

Применяется к

См. также раздел