ProcessStartInfo.UseShellExecute は実行中のプロセスにどのように影響しますか?
UAC から UseShellExecute への特別なアクセス許可が必要ですか?
別のユーザーで実行されますか?
新しい権限が付与されますか?
Windows には、プロセスを開始するための 2 つの異なる API 関数があります。低レベルのものは CreateProcess() で、ネイティブ API 関数に直接マップされます。また、シェル (エクスプローラー) によって実装される関数である ShellExecuteEx() があります。抽象化のレベルがはるかに高くなります。
これらは非常に異なる機能であり、それは ProcessStartInfo のドキュメントに見られるものです。CreateProcess() は実行可能ファイルのみを起動できますが、I/O のリダイレクトやコンソール ウィンドウの外観の制御など、コンソール モード プログラムの制御を適切にサポートしています。ShellExecuteEx() は、シェルによって追加された機能を利用します。ファイルの関連付けは大きなものであるため、特定のファイル名拡張子に登録されている実行可能ファイルを開始できます。
どちらの API 関数にも、プロセスの実行方法に影響を与えるオプションがあります。CreateProcess でサポートされている ProcessStartInfo クラスとProcess Creation Flagsのプロパティと、 ShellExecuteEx() が使用するSHELLEXECUTEINFO 構造体のフィールドとの間に密接な相関関係があることがわかります。ただし、これらの機能は重複しないため、UseShellExecute をいじる必要があります。