一般保護エラーの原因とトラブルシューティングのヒント

文書翻訳 文書翻訳
文書番号: 82710 - 対象製品
この資料では、表示されるエラー メッセージについて説明していません。エラー メッセージの詳細については、「サポート技術情報」 (Microsoft Knowledge Base ) の次の資料を参照してください。
315854 Windows 98 and Windows Me Error Message Resource Center
すべて展開する | すべて折りたたむ

目次

概要

Intel 80286、80386、および 80486 CPU はプログラムの異常動作を検出できます。 最も一般的な問題は、スタック エラー、無効な命令、除算エラー (0 による除算)、および一般保護エラーです。 これらは一般にプログラム内に非標準のコードがあることを示しています。

詳細

発生する可能性のあるエラーの種類

以下のエラーは Windows ベースのプログラム、Windows 自体、または Windows デバイス ドライバ (ビデオ アダプタ ドライバなど) で発生する可能性があります。

スタック エラー (割り込み 12)

スタック エラーの原因は、以下が考えられます。
  • 命令がスタック セグメントの制限を超えるメモリにアクセスしようとしている ((POP、PUSH、ENTER、LEAVE、またはスタック関連アクセス : MOV AX、[BP+6])
  • セレクタがマークされ、存在しないが有効な SS の読み込み (これは Windows では発生しないはずです)
スタック エラーは常に Windows の現在のプログラムにとって致命的です。

無効な命令 (割り込み 6)

CPU はほとんどの無効な命令を検出し、割り込みを生成します。

これは常にプログラムにとって致命的です。 これは発生しないはずであり、通常、コードではなくデータを実行したことに原因があります。

除算エラー (割り込み 0)

これはレジスタに除算の結果を保持できない場合に発生します。 これは、0 による除算、または除算オーバーフローが原因で発生する可能性があります。

一般保護エラー (割り込み 13)

他の例外を引き起こさないすべての保護違反は、一般保護例外になります。 これには、次のエラーが含まれますが、これだけに限定されません。
  • CS、DS、ES、FS、GS セグメントを使用した場合に、セグメントの制限を超えた。 これはプログラムのきわめて一般的な問題であり、通常、割り当てに必要なメモリの量を誤って計算したことが原因で発生します。
  • 実行不可能なセグメントへの実行の移動 (たとえば、ガーベジが格納されている場所へのジャンプなど)
  • 読み取り専用セグメントまたはコード セグメントへの書き込み
  • セグメント レジスタへの誤った値の設定
  • NULL ポインタの使用。値 0 は NULL ポインタとして定義されます。保護モードでは、0 が設定されたセグメント レジスタの使用は常に無効です。

一般保護エラーのトラブルシューティング

まず、エラーの発生元の範囲を絞ります。 一般保護エラーは、ソフトウェアまたはハードウェアに原因がある可能性があるため、最初の手順はコンピュータをセーフ モードで再起動することです。 セーフ モードで再起動することによって、Windows の必須コンポーネントだけが読み込まれた状態で、コンピュータをテストできます。 コンピュータをセーフ モードで起動すると、エラー メッセージが表示されない場合は、発生元はドライバかプログラムの可能性があります。 セーフ モードで再起動した後、コンピュータをテストして、エラー メッセージが表示された場合は、ハードウェアまたは Windows コア ファイルが破損していることが問題の原因である可能性が高くなります。
  1. Windows 95 では、コンピュータを再起動し、"Starting Windows 95" のメッセージが表示されたら F8 キーを押し、[Safe Mode] を選択します。

    Windows 98 では、コンピュータを再起動し、Windows 98 Startup Menu が表示されるまで Ctrl キーを押し続け、[Safe Mode] を選択します。
  2. セーフ モードでコンピュータをテストします。 エラーが発生しない場合、以下の手順のオペレーティング システムに該当する手順を実行します。 エラーが発生した場合、Windows インストールに問題があるか、ハードウェア障害の兆候が現れている可能性があります。 この資料の「ハードウェアのテスト」を参照してください。

    Windows 98

    Safe モードでコンピュータを再起動した後で、システム設定ユーティリティ ツール (Msconfig.exe) を使用して、問題の原因となっている可能性のある競合を最小にしてください。
    1. [スタート] ボタンをクリックし、[プログラム] をポイントして、[アクセサリ] をポイントし、[システム ツール] をポイントして、[システム情報] をクリックします。
    2. [ツール] メニューの [システム設定ユーティリティ] をクリックします。
    3. [全般] タブの [起動オプションを選択する] をクリックして、以下のチェック ボックスをオフにします。
      • CONFIG.SYS ファイルを処理する
      • AUTOEXEC.BAT ファイルを処理する
      • WINSTART.BAT ファイルを処理する (利用できる場合)
      • SYSTEM.INI ファイルを処理する
      • WIN.INI ファイルを処理する
      • スタートアップ グループの項目を読み込む
    4. [OK] をクリックし、画面の指示に従って通常通りにコンピュータを再起動します。 コンピュータを再起動し、テストした後、まだエラー メッセージが表示されない場合、次の手順に進みます。
    5. システム設定ユーティリティ ツールを実行し、[起動オプションを選択する] ボックスからいずれかの項目をクリックしてオンにし、[OK] をクリックして、コンピュータを再起動し、テストします。
    6. [起動オプションを選択する] ボックスのすべての項目をオンにするまで、このプロセスを続けます。 項目を選択し、問題が再現したら、[起動オプションを選択する] の対応する項目のタブをクリックして、チェック ボックスの半分をオフにし、[OK] をクリックして、コンピュータを再起動します。 問題の原因となっている設定を特定できるまで、この操作を続けます。
    7. すべての項目をオンにして、コンピュータを正常に再起動できる場合は、システム設定ユーティリティ ツールを使用して、[通常の起動] をクリックしてオンにし、[OK] をクリックして、コンピュータを再起動します。
    Msconfig.exe の使用についての関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    192926 How to Perform Clean-Boot Troubleshooting for Windows 98
    192926 Win98 でクリーン ブート トラブルシューティングを実行する方法

    Windows 95

    以下の手順で、発生している問題が、コンピュータのリアルモード設定によるものかどうかを判定できます。 これには、Config.sys ファイルおよび Autoexec.bat ファイルから読み込まれるドライバが含まれます。
    1. コンピュータを再起動します。 "Starting Windows 95" メッセージが表示されたら、F8 キーを押し、Startup Menu の [Step-By-Step Confirmation] をクリックします。
    2. 画面の指示に従って、次の項目を読み込みます (他の項目を読み込むメッセージが表示されたら、N を押します)。
      • Dblspace ドライバ
      • Himem.sys
      • Ifshlp.sys
      • Dblbuff.sys.
      • Windows 95 GUI を読み込み、すべての Windows ドライバの読み込みを選択します。
      : Windows 95 では、Config.sys ファイルおよび Autoexec.bat ファイルは必要ありませんが、コンピュータにインストールされている一部のツールがそれらを必要としている可能性があります。 対話による起動が成功し、Config.sys ファイルおよび Autoexec.bat ファイルが必要ないことを確認できるまで、それらのファイルの名前は変更しないでください。

      リアル モード設定のクリーン ブートで問題が解決した場合は、ステップ バイ ステップの確認機能を使用して、常駐 (TSR) またはリアル モード デバイス ドライバによる競合の切り分けを行います。

      コマンド プロンプト モードで起動し、win と入力して Windows 95 を読み込み、起動中に Shift キーを押し続けます。これで、スタートアップ時にプログラムが自動的に読み込まれることを防ぎます。

      スタートアップ時にプログラムが読み込まれないようにして問題が解決した場合は、以下の問題発生元の候補を調査します。

    Winstart.bat ファイル

    Winstart.bat ファイルは、Windows ベースのプログラムに必要な TSR の読み込みに使用されますが、MS-DOS セッションでは不要です。

    Winstart.bat ファイルの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    134402 Some TSRs Moved from Autoexec.bat to Winstart.bat During Setup
    スタートアップ グループ

    スタートアップ グループを無効にすることで問題が解決した場合は、スタートアップ グループから各プログラムを個別に削除して、問題を起こしているプログラムを特定します。

    レジストリの実行キー

    警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

    次のレジストリ キーからプログラムの文字列を削除することによって、プログラムが読み込まれないようにすることができます。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
    また、プログラムは次のレジストリ キーから読み込まれることもあります。
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    Win.ini ファイル

    このファイルの [Windows] セクションの "load=" と "run=" 行により、プログラムが自動的に起動します。詳細については下記を参照してください。

    Windows 構成ファイルのテスト

    Windows 構成ファイルをテストするには、次の手順を実行します。
    1. コマンド プロンプト モードで起動します。
    2. 次の行を入力して Win.ini ファイルの名前を変更します。
      ren c:\windows\win.ini *.bak
    3. win と入力して Windows 95 を起動します。これで問題が解決した場合は、項目が読み込まれないようにするために、Win.ini ファイルの [Windows] セクションの "load=" と "run=" 行を空白にするか、セミコロン (;) を行の前に付けます。
    4. 次の行を入力して System.ini ファイルの名前を変更します。
      ren c:\windows\system.ini *.bak
    5. Windows 95 は、GUI を読み込むために System.ini ファイルを必要とします。次の行を入力して元のファイルを置き換えます。
      copy c:\windows\system.cb c:\windows\system.ini
      : System.cb ファイルを使用して Windows 95 を起動すると、マウス ドライバが読み込まれません。次の行を追加して、新しい System.ini ファイルを編集します。
      [386Enh]
      mouse=*vmouse, msmouse.vxd

      [boot]
      drivers=mmsystem.dll
      mouse.drv=mouse.drv
    6. コマンド プロンプトで win と入力して Windows 95 を起動します。元の System.ini ファイルを System.cb ファイルで置き換えて問題が解決した場合は、元の System.ini ファイルの [boot] または [386Enh] セクションに問題がある可能性が高くなります。元のファイルを復元してトラブルシューティングを行います。
    7. 問題の原因を特定するには、行の先頭にセミコロン (;) を置き、その項目が読み込まれないようにします。
    System.ini ファイルとそのデフォルトのエントリの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    140441 Creating a New System.ini File Without Third-Party Drivers
    プロテクト モードのデバイス ドライバ

    Safe モードでは、Windows 95 のプロテクト モードのすべてのデバイス ドライバが無効になります。互換性のないコンポーネントとリソースの競合をテストするには、デバイス マネージャでプロテクト モードのデバイス ドライバを無効にします。

    競合を特定するためにプロテクト モードのデバイス ドライバを削除する
    1. [スタート] メニューで、[設定]、[コントロール パネル] の順にポイントして、[システム] をダブルクリックします。
    2. [デバイス マネージャ] タブで、[種類別に表示] をクリックします。
    3. 各プロテクト モードのデバイス ドライバを無効にします。たとえば、次のようにします。
      1. [フロッピー ディスク コントローラ] をダブルクリックして展開します。
      2. [スタンダード フロッピー ディスク コントローラ] をクリックして、[プロパティ] をクリックします。
      3. [全般] タブの [Original Configuration (Current) ] チェック ボックスをオフにし、[OK] をクリックします。

        : ハードウェア プロファイルを有効にしている場合は、構成ごとにチェック ボックスが存在します。トラブルシューティングを行うハードウェア プロファイルのチェック ボックスをオフにします。
      4. デバイス マネージャで各デバイスに対して手順の a. 〜 c. を繰り返します。
    4. [閉じる] をクリックし、コンピュータを再起動します。
    デバイス マネージャでプロテクト モードのドライバを無効にすることによって問題が解決した場合、ハードウェアの競合があるか、ドライバがハードウェアと互換性がない可能性があります。 Windows 95 のリソース競合のトラブルシューティングに関する関連情報については、「サポート技術情報」 (Microsoft Knowledge Base) の次の資料を参照してください。
    133240 Troubleshooting Device Conflicts with Device Manager
    133240 デバイスマネージャでデバイスの競合をトラブルシュートする方法
    Windows 95 プロテクト モード デバイス ドライバがハードウェアと互換性のないことが判明した場合は、新しいドライバの入手について、ハードウェアの製造元に問い合わせてください。

    ビデオ ドライバを標準 VGA ドライバに変更する

    : この資料で先述した「競合を特定するためにプロテクト モードのデバイス ドライバを削除する」の指示に従った場合、ビデオ ドライバは VGA に変更されているため、次の項はスキップできます。ビデオ アダプタを無効にすると、ビデオは VGA ドライバに設定されます。

    Safe モードでは Windows 95 は VGA ビデオ ドライバを使用して起動されます。問題がビデオ ドライバに関連するかどうかをテストするには、VGA ドライバに変更します。

    注 : 以前の構成に確実に戻すためには、次の手順を実行します。
    1. System.ini ファイルのバックアップを作成します。
    2. 現在のデスクトップ領域 (解像度) とカラー パレットを書き留めます。
    3. 現在のビデオ アダプタの名前を記録します。
    VGA ビデオ ドライバに変更するには、以下の手順を実行します。
    1. Windows 95 を Safe モードで起動します。
    2. [スタート] メニューで、[設定]、[コントロール パネル] の順にポイントして、[画面] をダブルクリックします。
    3. [ディスプレイの詳細] タブで [詳細プロパティ] をクリックします。
    4. [アダプタ] タブで [変更] をクリックします。
    5. [すべてのハードウェアを表示] をクリックします。
    6. [製造元] ボックスで、[(標準ディスプレイ)] をクリックします。 [モデル] ボックスの一覧で [標準ディスプレイ アダプタ (VGA)] をクリックし、[OK] をクリックします。
    7. [OK] または [閉じる] をクリックし、[コントロール パネル] に戻ります。
    8. コンピュータを再起動します。
    ビデオ ドライバが Windows 95 と互換性がないことが判明した場合は、新しいドライバの入手について、ハードウェアの製造元に問い合わせてください。

    レジストリの破損

    Windows 95 を Safe モードで起動すると、最小限のレジストリが読み込まれます。このため、Safe モードで実行中には、レジストリの破損が明らかにならない可能性があります。問題の原因がレジストリの破損であるかどうかを判定するには、既存のレジストリ (System.dat) をバックアップしたものと置き換える必要があります。破損したレジストリのトラブルシューティングを行うには、以下の手順を実行します。
    1. コマンド プロンプト モードで起動します。
    2. 次のコマンドを入力して、レジストリのバックアップからファイル属性を削除します。
      c:\windows\command\attrib -h -s -r c:\system.1st
    3. 次のコマンドを入力して、現在のレジストリからファイル属性を削除します。
      c:\windows\command\attrib -h -s -r c:\windows\system.dat
    4. 次のコマンドを入力して、レジストリの名前を変更します。
      ren c:\windows\system.dat *.dax
    5. 次のコマンドを入力して、バックアップ ファイルを現在のレジストリにコピーします。
      copy c:\system.1st c:\windows\system.dat
    6. コンピュータを再起動します。
    : System.1st ファイルは、Windows 95 セットアップの最終段階で作成されたレジストリのバックアップです。このため、"Running Windows 95 for the first time" バナーが表示され、あたかもインストール中のように、Windows 95 が最終設定を実行します。

    System.dat ファイルを System.1st ファイルで置き換えることにより問題が解決した場合、問題はレジストリの破損に関連している可能性があります。Windows 95 のインストール後に追加したプログラムとデバイス ドライバは、新しいレジストリを更新するために、再インストールが必要になる可能性があります。

    問題が解決しない場合は、元のレジストリを復元します。そのためには、次の手順を実行します。
    1. コンピュータをコマンド プロンプトで再起動します。
    2. 次のコマンドを入力し、各コマンドの後で Enter キーを押します。
      c:\windows\command\attrib -s -h -r c:\windows\system.dat

      copy c:\windows\system.dax c:\windows\system.dat
      : 既存の System.dat ファイルを上書きするかたずねられたら、上書きします。

    3. コンピュータを再起動します。
    Windows 95 CD-ROM には、システム ファイルとレジストリのバックアップのためのツールが含まれています。 これらのツールの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    139437 Windows 95 Emergency Recovery Utility
    139437 Windows 95 の Emergency Recovery Utility について
    135120 Configuration Backup Tool for Backing Up the Registry

ハードウェアをテストする

ハードウェアをテストするために、最も効果的な方法は、新しいフォルダか空のフォルダに Windows をインストールすることです。 "新規" インストールで問題が発生した場合、問題はハードウェアの障害にあります。 ハードウェアの製造元に問い合わせるか、ハードウェアの専門担当者にハードウェアを調べてもらいます。 新しいフォルダに Windows をインストールするには、「サポート技術情報」(Microsoft Knowledge Base) の次のいずれかの資料の手順を実行します。
193902 How to Install Windows 98 in a New Folder
142096 How to Install Windows 95 in a New Folder
Windows を "新規" フォルダにインストールして問題が解決した場合は、Windows コア ファイルが破損しているか、または元のインストールの設定が原因で問題が発生しています。 Windows の新規インストールを使用することができますが、プログラムの再インストールが必要になります。 Windows の元のインストールに戻り、トラブルシューティングを続行する場合は、「サポート技術情報」の次の資料の手順を実行します。
193902 How to Install Windows 98 in a New Folder
142096 How to Install Windows 95 in a New Folder
192926 How to Perform Clean-Boot Troubleshooting for Windows 98
192926 Win98 でクリーン ブート トラブルシューティングを実行する方法
243039 How to Perform a Clean Boot in Windows 95

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 82710 (最終更新日 2002-06-11) を基に作成したものです。

プロパティ

文書番号: 82710 - 最終更新日: 2004年12月27日 - リビジョン: 1.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows 95
  • Microsoft Windows 98 Standard Edition
キーワード:?
kbinfo kbgpf KB82710
"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