[FIX] Windows Common Controls の Mscomctl.ocx または Comctl32.ocx によりアプリケーションまたは Visual Basic 6 IDE が突然終了する場合がある、または "Divide By Zero" エラー メッセージが表示される場合がある

文書翻訳 文書翻訳
文書番号: 896559 - 対象製品
Notice
Microsoft Visual Basic 6.0 のメインストリーム サポートは 2005 年 3 月 31 日で終了しました。セキュリティに関連しないこのパッケージをマイクロソフトがリリースするのは、メインストリーム サポート終了の直前でリリースの準備ができていた改善が含まれているためです。Visual Basic 6.0 は延長サポートに移行し、延長サポートは 2008 年 3 月 31 日まで継続します。マイクロソフトは Visual Basic 6.0 のメインストリーム サポート フェーズを延長しません。
すべて展開する | すべて折りたたむ

目次

現象

Microsoft Windows Common Controls には 2 つのバージョンがあります。Comctl32.ocx は Windows Common Controls 5.0 を含み、Microsoft Visual Studio 5.0 に収められていました。Mscomctl.ocx は Windows Common Controls 6.0 を含み、Visual Studio 6.0 に収められていました。この修正プログラムは、これらのコントロールにある次の重大なバグを修正します。

Windows Common Controls 5.0: Comctl32.ocx

次のような状況を想定します。
  • Microsoft Windows 2000 またはそれ以降のオペレーティング システム バージョンで WinEvent フックを設定するアプリケーションを実行しています。
  • Microsoft Windows Common Controls 5.0 の ListView コントロールまたは TreeView コントロールを使用するアプリケーションを起動します。
この状況では、アプリケーションが突然終了したり、次のようなエラー メッセージが表示されることがあります。
Project1: Project1.exe - アプリケーション エラー
"0x202d0f51" の命令が "0x40000001" のメモリを参照しました。メモリが "written" になることはできませんでした。プログラムを終了するには [OK] をクリックしてください
通常、Microsoft Active Accessibility 上でビルドされたアクセシビリティ アプリケーションが WinEvent フックを設定します。たとえば、Narrator は Microsoft Active Accessibility 上でビルドされています。ただし、Microsoft Windows XP Tablet PC Edition オペレーティング システム上で動作するユーティリティも WinEvent フックを設定します。

Windows Common Controls 6.0: Mscomctl.ocx

Mscomctl.ocx バージョン 6.1.97.64 またはそれ以降のバージョンを使用するアプリケーションを実行していて、アプリケーションに AllowColumnReorder プロパティが True に設定された ListView コントロールが含まれる場合、列の順序を変更しようとすると次のエラー メッセージが表示されます。
Project1: Project1.exe - アプリケーション エラー
"0x27618848" の命令が "0x016e1e90" のメモリを参照しました。メモリが "read" になることはできませんでした。
システムの既定のデバッガ設定に応じて、"0xC0000094 Divide By Zero" エラー メッセージが表示されたり、アプリケーションが突然終了したりする場合もあります。

Visual Basic 6 IDE でアプリケーションを実行している場合、これらの問題が両方とも発生します。

原因

Windows Common Controls 5.0 の問題が発生するのは、Comctl32.ocx が、NULL テキスト メンバを持つ LVI_IMAGE のマスクを使用することにより、ListView アイテムのテキスト メンバをコピーしようとするためです。

Windows Common Controls 6.0 の問題が発生するのは、Mscomctl.ocx ファイルのバージョン 6.1.97.64 における変更のためです。バージョン 6.1.97.64 は修正プログラム 826287 に収められています。Windows XP またはそれ以降のオペレーティング システムを実行しているコンピュータ上で Visual Studio 6.0 が実行中である場合、Mscomctl.ocx ファイルのバージョン 6.1.97.64 は、ListView コントロールの動作を変更します。Mscomctl.ocx の ImageList コントロール呼び出しの大部分は、Comctl32.dll で定義されている ImageList シェル共通コントロール クラスへの呼び出しのラッパーです。ただし、ImageList_GetImageRect メソッドはラップされません。このメソッドは依然として ImageList 構造体の以前のバージョンと、Mscomctl.ocx ファイルで定義されている ImageList コントロール クラスの以前のバージョンを使用します。この設計により、列の順序変更操作でゼロ除算エラーが発生します。

解決方法

重要実行中のアプリケーションがサードパーティにより提供された場合、修正プログラムをインストールする前に、アプリケーションを提供したサードパーティに連絡する必要がある場合があります。たとえば、自身でアプリケーションを開発していない場合です。十分なテストを行わずにこの修正プログラムをインストールすると、アプリケーションは機能を停止する場合があります。

収録されている修正プログラムは、インストール後にはアンインストールしたり削除したりすることはできません。

下記のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。
元に戻す画像を拡大する
ダウンロード
Visual Basic 6.0 Common Controls パッケージ
http://www.microsoft.com/downloads/details.aspx?FamilyId=25437D98-51D0-41C1-BB14-64662F5F62FE&displaylang=ja
マイクロソフトのサポート ファイルをダウンロードする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用して、配布ファイルのウイルス チェックを行っています。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

マイクロソフトでは、サポートされている修正プログラムを用意しています (Visual Basic 6 SP6 用)。
修正プログラム (英語版) のファイル属性は次の表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。これらのファイルの日付と時刻は世界協定時刻 (UTC) で表示されます。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーン] タブを使用してください。
   日付            時刻    バージョン         サイズ      ファイル名
   ------------------------------------------------------
18-Aug-2003  20:25  6.0.81.6   1,344,512  Comctl32.ocx     
02-Nov-2004  00:16  6.1.97.86  1,064,208  Mscomctl.ocx     

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
827217 [FIX] Windows 2000 またはそれ以降での Comctl32.ocx のアクセス違反 (英語)
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明

プロパティ

文書番号: 896559 - 最終更新日: 2008年10月3日 - リビジョン: 2.4
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Studio 6.0 Enterprise Edition
キーワード:?
kbqfe kbvs600sp6 kbpending kbbug KB896559
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com