ニュース

今月の「Windows 10 バージョン 1803」向けセキュリティパッチに問題 ~WPFアプリがクラッシュ

「Visual Studio」などに影響。WPFアプリを作っている開発者は回避策を

公式のドキュメントサイトにおける案内

 米Microsoftは2月11日(現地時間)、「Windows 10 バージョン 1803」向けに配信された今月の月例セキュリティ更新プログラム「KB4601354」に新たな問題が発見されたことを明らかにした。「WPF」(Windows Presentation Foundation)製のアプリがクラッシュして閉じてしまったり、以下のようなエラーメッセージが表示されることがあるという。

Exception Info: System.NullReferenceException at System.Windows.Interop.HwndMouseInputProvider.HasCustomChrome(System.Windows.Interop.HwndSource, RECT ByRef)
at System.Windows.Interop.HwndMouseInputProvider.GetEffectiveClientRect(IntPtr)
at System.Windows.Interop.HwndMouseInputProvider.PossiblyDeactivate(IntPtr, Boolean)
at System.Windows.Interop.HwndMouseInputProvider.Dispose()

 この問題がRootVisualがnullになっているHwndSourceを破棄するときに発生する。「Visual Studio」でドッキングやウィンドウを分割するときに起こるほか、他のアプリでも発生する可能性がある。

 影響するOSは、以下の通り。比較的新しいWindows 10バージョンには影響しないようだ。

  • Windows 10 バージョン 1803
  • Windows 10 Enterprise LTSC 2016
  • Windows 10 バージョン 1607
  • Windows Server バージョン 1803
  • Windows Server 2016

 「Visual Studio」の場合は、以下のバージョンへアップグレードすることで問題を回避することが可能。

  • Visual Studio 2019 バージョン 16.9 Preview 4
  • Visual Studio 2019 バージョン 16.8.5
  • Visual Studio 2019 バージョン 16.7.12
  • Visual Studio 2017 バージョン 15.9.33

 自分で開発したWPFアプリで回避策を講じるには、以下のスイッチを両方とも“true”に設定する必要がある。“AppContext.TrySetSwitch()”メソッドで指定したり、アプリの設定ファイルに追記するなど、いくつかの方法が用意されているので、ドキュメントを参照しながら対策を施していただきたい。2つ目のオプションは今のところ無視されるが、“true”になっていれば今後の修正で問題が改善されるとのこと。

  • Switch.System.Windows.Interop.MouseInput.OptOutOfMoveToChromedWindowFix
  • Switch.System.Windows.Interop.MouseInput.DoNotOptOutOfMoveToChromedWindowFix