UseShellExecute が false の場合に ProcessStartInfo.WindowsStyle が受け入れられる

以前は、UseShellExecutetrue のときだけ WindowStyle が適用されました。 この変更では、UseShellExecutefalse のときでも WindowStyle が適用されます。

以前の動作

この変更以前、次のコードでは、UseShellExecute = false により、WindowStyle が指定されていないようにプロセスが開始されました。 つまり、ウィンドウは非表示ではなく、表示されました。

using System.Diagnostics;

ProcessStartInfo startInfo = new()
{
    FileName = @"C:\Windows\System32\notepad.exe",
    UseShellExecute = false,
    WindowStyle = ProcessWindowStyle.Hidden
};

var process = Process.Start(startInfo);
process!.WaitForExit();

新しい動作

.NET 8 以降、UseShellExecute = false で始まったプロセスの場合でも WindowStyle が適用されます。

前の動作」セクションのコードは、ウィンドウが非表示の状態でプロセスが開始されます。

導入されたバージョン

.NET 8 Preview 6

破壊的変更の種類

この変更は、動作変更です。

変更理由

一部のシナリオでは、生成されたプロセスのウィンドウのスタイルを変更する必要があります (特にそれを非表示にするために)。

この変更は、適切にサポートされていない場合でも、WindowStyle を指定したコードに影響を与えます。 たとえば、WPF のイベント発生順序が変更されました。 破壊的変更を軽減するには、ProcessStartInfoWindowStyle を指定しないでください。

影響を受ける API