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

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

Примечание

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

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

Примечание

UseShellExecute должен быть true , если для свойства задано ErrorDialog значение true.

Если задано WindowStyle ProcessWindowStyle.Hiddenзначение , UseShellExecute необходимо задать значение true.

WorkingDirectory

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

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

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

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