ProcessStartInfo.UseShellExecute Свойство

Определение

Получает или задает значение, позволяющее определить, нужно ли использовать оболочку операционной системы для запуска процесса.

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 в платформа .NET Framework приложениях и false в приложениях .NET Core.

Исключения

Выполняется попытка задать значение для true в приложениях универсальной платформы Windows (UWP).

Примеры

// 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 позволяет перенаправлять потоки ввода, вывода и ошибки.

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

Примечание

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

При использовании оболочки операционной системы для запуска процессов можно запустить любой документ (который является любым зарегистрированным типом файла, связанным с исполняемым файлом, имеющим действие по умолчанию) и выполнять операции с файлом, например печать, с помощью Process объекта. Если UseShellExecute имеет значение false , можно запускать только исполняемые файлы с помощью Process объекта.

Примечание

UseShellExecutetrueЕсли для свойства задано значение ErrorDialog true .

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

WorkingDirectory

WorkingDirectoryСвойство ведет себя по-разному в зависимости от значения UseShellExecute Свойства. Если UseShellExecute имеет значение true , WorkingDirectory свойство указывает расположение исполняемого файла. Если WorkingDirectory параметр является пустой строкой, предполагается, что текущий каталог содержит исполняемый файл.

Если UseShellExecute параметр имеет значение false , WorkingDirectory свойство не используется для поиска исполняемого файла. Вместо этого он используется только запущенным процессом и имеет смысл только в контексте нового процесса. Если UseShellExecute имеет значение false , FileName свойство может быть либо полным путем к исполняемому файлу, либо простым именем исполняемого файла, которое система будет пытаться найти в папках, заданных переменной среды PATH.

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

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