LoadImage 関数が負の高さをもつビットマップの読み込みに失敗する

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Win32 API である LoadImage 関数の不具合についてご案内します。 現象 Windows 10 において、アプリケーションから負の高さをもつビットマップ ファイルを指定して LoadImage 関数を実行すると、ビットマップがロードできずに失敗し、NULL が返ります。Windows 7 では成功し、ビットマップがロードできていました。 原因 この現象は、LoadImage 関数の不具合によって発生します。関数内において、ビットマップの高さとして負数があり得ることを考慮していないことが原因です。 回避策 現在、この問題を修正する予定がありません。 GDI+ など、ほかの API を利用することを検討してください。 参考情報 LoadImageW function https://docs.microsoft.com/ja-jp/windows/desktop/api/winuser/nf-winuser-loadimagew Using Images, Bitmaps, and Metafiles https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms533815.aspx Bitmap class https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms534420.aspx,


WPF アプリケーションにおいて文字入力可能なコントロールを無効化した場合の挙動について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、WPF アプリケーションにおいて、文字入力可能なコントロールの IsEnabled プロパティを False に設定した場合の挙動についてご案内します。   現象 WPFのコントロールは、IsEnabled プロパティを False に設定してすることによりそのコントロールを無効化することが可能です。 この場合、マウスやタブ キー等で選択やフォーカスを設定することができなくなり、TextBoxBase クラスから派生した TextBox クラスや ComboBox クラス等の文字入力可能なコントロールでは文字を入力できない状態になります。 しかしながら、テキストを設定してあるコントロールに対して右クリック等によりコンテキスト メニューを表示するとメニューアイテムとして変換候補が含まれますが、この表示された変換候補から選択すると、コントロール内の文字列が選択した文字列に変更されます。 具体的には、以下のスクリーンショットのとおり、TextBox に表示された「TextBox」という文字列が、コンテキスト メニューにある「TextBox」を選択するとその文字列に変更されています。 ↓   原因 WPF では、コントロールの IsEnabled プロパティの状態によらず候補が表示されます。   回避策 コンテキスト メニューの表示は WPF 内で実装しており、IsReadOnly プロパティが True の場合はコンテキスト メニューを表示しません。 このため、IsEnabled プロパティを False に設定するのに加え、IsReadOnly プロパティを True に設定することにより、意図していないコントロール内の文字列編集を防ぐことが可能です。   参考情報…


System.Security.Cryptography.Xml.SignedXml.LoadXml メソッドの更新について

こんにちは、Platform SDK (Windows SDK) サポートチームです。2018 年 5 月 8 日に公開された CVE-2018-0765 のセキュリティ更新に伴い、 System.Security.Cryptography.Xml.SignedXml.LoadXml  メソッドに行われた変更についてご案内します。 現象 2018 年 5 月 8 日に公開された CVE-2018-0765 のセキュリティの更新をインストールいただいた環境にて System.Security.Cryptography.Xml.SignedXml.LoadXml メソッドを利用して署名用の XML ファイルをロードした場合、Reference 要素 および Transform 要素が一定数以上定義されていると、「CryptographicException: 間違った形式の SignedInfo/Reference 要素です。」 例外が発生します。具体的な上限は以下の通りになります。 ・Reference 要素内の Transform 要素が 10 以上。 ・SignedInfo 要素内の Reference 要素が 100 以上。 原因 この上限はセキュリティ強化のために行われており、例外の発生は想定された動作になります。これまで Reference 要素 および Transform 要素は無制限に定義可能でしたが、セキュリティ攻撃に利用される危険性があると判断し、攻撃を防ぐために上限を設定しました。この情報は下記資料に公開しています。 CVE-2018-0765…


FlowDirection プロパティを RightToLeft に設定した場合の問題について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、XAML を使用するアプリケーションにおいて、FlowDirection プロパティを RightToLeft に設定した場合の問題についてご案内します。   現象 Store アプリ、UWP アプリ、WPF アプリ で FlowDirection プロパティを RightToLeft に設定して文字列を表示すると、Windows Forms アプリ と異なる表示結果になる場合があります。 例えば、以下のような XAML を Store アプリ、UWP アプリ、WPF アプリ で実装することを想定します。 <TextBlock Text=”String(100)” FlowDirection=”RightToLeft” /> <TextBlock Text=”String(100)…” FlowDirection=”RightToLeft”/> <TextBlock Text=”Windows 10Professional” FlowDirection=”RightToLeft” Language=”en-US”/> <TextBlock Text=”Windows 10Professional” FlowDirection=”RightToLeft” Language=”ar-SA”/> 以下は、実行時のスクリーンショットですが、上から、Store アプリ、UWP アプリ、WPF アプリ、Windows Forms アプリのウインドウになります。…