現在オフラインです。再接続するためにインターネットの接続を待っています

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

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 パッケージマイクロソフトのサポート ファイルをダウンロードする方法の関連情報を参照するには、以下の「サポート技術情報」 (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 - 最終更新日: 10/03/2008 11:56:32 - リビジョン: 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
フィードバック