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

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

Примечание

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

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

WorkingDirectory

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

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

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

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