ProcessStartInfoクラスを用いると、引数以外にも子プロセス起動時のオプションや動作を細かく指定することができます。 環境変数やカレントディレクトリを変更した状態で起動したい場合には、ProcessStartInfoクラスを使って子プロセスを起動する必要があります。
例として、コマンドなどを子プロセスとして起動したい場合・シェルを使用して起動したい場合には、UseShellExecuteをtrue
にします。 逆に、実行可能ファイルを直接指定して子プロセスとして起動したい場合や、標準入出力を扱いたい場合、環境変数を設定して起動する場合は、false
にする必要があります。 UseShellExecuteはランタイムによってデフォルト値が異なり、.NET Frameworkではtrue
、.NET Core/.NET 5ではfalse
となっています。
また、Windows上でコマンドラインプロセス(コンソールアプリケーション)を起動する場合にDOSプロンプトウィンドウを表示したくない場合には、CreateNoWindowにtrue
を指定して起動します。 CreateNoWindowはデフォルトではfalse
となっています。
子プロセスの起動と環境変数の設定については環境変数 §.子プロセスの環境変数でも解説しています。