16
WindowsでSYSTEM_SERVICE_EXCEPTION BSODを修正する方法
SYSTEM_SERVICE_EXCEPTION ブルースクリーン
(画像提供:Tom's Hardware)

Windows 10 または 11 でブルースクリーン(死のブルースクリーン)が発生し、停止コード SYSTEM_SERVICE_EXCEPTION が表示される場合、原因は様々ですが、ドライバーの不具合が常に考えられる原因です。SYSTEM_SERVICE_EXCEPTION に付随するバグチェックコードは通常 0x3B です。興味深いことに、この数値コードはMicrosoft エラー検索ツールで多数(7 件!)の関連情報を持っているため、この問題はテキストベースの停止コードのみ、または数値コードと組み合わせて調査するのが最適です。 

このエラーに関するMicrosoft のバグ チェック ページでは、原因について次のように説明されています。「この停止コードは、実行中のコードに例外があり、その下のスレッドがシステム スレッドであることを示しています。」 

SYSTEM_SERVICE_EXCEPTION のファイルシステム修正

Microsoftは、SYSTEM_SERVICE_EXCEPTIONのバグチェックページで、「エラーの原因となっているドライバーが特定できる場合、そのドライバー名がブルースクリーンに表示されます…」と説明しています。実際、私自身もこのエラーを経験し、Windows 10のNTFSファイルシステムドライバー(Ntfs.sys)が原因であると特定されました。この特定は、何らかのファイルシステムエラーが発生したことを示唆するものであるため、一長一短です。とはいえ、WindowsのOSレベルのドライバーは、デバイスドライバーのように置き換えることはできませんし、またそうすべきでもありません。

このような修復は、DISMコマンドとSFCコマンドに任せるのが最適です。そのため、再起動後にSYSTEM_SERVICE_EXCEPTION停止コードが発生した場合、まずは管理者権限のコマンドプロンプトまたはPowerShellセッションで以下のコマンドを実行します。

Dism /オンライン /クリーンアップイメージ /復元ヘルス

SFC /scannow

最初のコマンドは、Windowsコンポーネントストア(通常はC:\Windows\WinSxS)内の破損または欠落したファイルを検索して置き換えます。2番目のコマンドは、すべてのWindowsシステムファイルを調べ(SFCはシステムファイルチェッカーの略です)、破損または欠落しているファイルを特定した場合に置き換えます。前述のDISMコマンドは通常3~5分かかりますが、SFCコマンドはさらに時間がかかる場合があります(特に修復を行う場合)。SFCでエラーが見つかり修正された場合は、最終的な結果が正常になるまで同じコマンドを繰り返し実行します。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

SYSTEM_SERVICE_EXCEPTION ブルースクリーン

SFCが破損ファイルを見つけて修復した場合は、「整合性違反は見つかりませんでした」と表示されるまでコマンドを実行し続けてください。ここでは、その状態になるまでたった2回の試行で済みました。  (画像提供: Tom's Hardware)

ドライバー検証ツールを使用して SYSTEM_SERVICE_EXCEPTION を修正する

Windows 10 と Windows 11 には、verifier.exe というドライバー検証ツールが組み込まれています。このツールは C:\Windows\System32 フォルダー(Windows が多くの管理ツールや修復ツールを保存しているフォルダー)にあります。ドライバーは、保護されたシステムコードへのアクセスが許可されている Windows コード要素(もちろん OS コンポーネント自体も同様)に属しているため、SYSTEM_SERVICE_EXCEPTION エラーによく関係しています。ほぼすべてのデバイスドライバーがこのエラーを引き起こす可能性があるため、新しいハードウェアをインストールしたときや、何らかのリムーバブルストレージデバイス(通常は USB ポートまたは Thunderbolt ポート経由)を接続したときに表示されることは珍しくありません。

以前のシステム修復(DISMおよびSFC)でもSYSTEM_SERVICE_EXCEPTION BSODが解消されない場合は、Windows Driver Verifierが原因の特定に役立つ可能性があります。このツールには警告があります。使用する前に、必ずPCの最新のイメージバックアップを作成してください。このツールはすべてのデバイスドライバーをチェックし、検証できないドライバーや破損したドライバーが見つかった場合は意図的にBSODを発生させます。 

探している情報は、BSODが発生したときに書き込まれるクラッシュダンプの中にあるはずです。クラッシュダンプは、memory.dmp または minidump.dmp というファイルに保存されます。前者はWindowsのルートディレクトリ(通常はC:\Windows)にあり、後者はC:\Windows\Minidumpにあります。クラッシュダンプの表示と調査には、Nir Sofer氏のBlueScreenViewツールの使用を強くお勧めします。このツールは、どちらのクラッシュダンプファイルにも対応しており、その内容を表示してくれます。 

ドライバー検証ツールを有効にする

1.管理コマンド プロンプトまたは PowerShell で「verifier.exe」と入力します。これにより、Driver Verifier Manager プログラムが開きます。

2. [次へ] をクリックし、デフォルト設定の [標準設定を作成する] のままにします。

SYSTEM_SERVICE_EXCEPTION ブルースクリーン

(画像提供:Tom's Hardware)

3.   「このコンピュータにインストールされているすべてのドライバーを自動的に選択する」を選択します。ドライバー名の一覧からドライバーを選択したい場合は、「一覧からドライバー名を選択する」をクリックします。いずれの場合も、 「次へ」をクリックして続行します。

SYSTEM_SERVICE_EXCEPTION ブルースクリーン

(画像提供:Tom's Hardware)

何百ものドライバーをテストするのにコンピューターで何時間も費やしたくないのであれば、このリストを絞り込み、リストから疑わしいドライバーを選択するためのヒントがいくつかあります。

ヒントA: DriverStore Explorerを使用してドライバーの名前と情報を取得する

DriverStore Explorerという無料のGitHubプロジェクトは、Windowsドライバーの検査と管理に特化した便利なソフトウェアツールを提供しています。私はテストシステムでこのツールを使用し、200を超えるドライバーが存在することを確認し、古いドライバーをクリーンアップして「わずか」195まで減らしました。これは、すべてのドライバーを選択するには膨大な数のチェックが必要で、かなりの時間がかかることを示しています。そのため、私はDriverStore Explorerを使ってドライバー名でドライバーを確認し、カテゴリ(ネットワークアダプター、ヒューマンインターフェースデバイス、ディスプレイアダプターなど)別にドライバーを確認するようにしています。

ヒントB: 可能であれば、ドライバーのチェックを疑わしいカテゴリやアイテムに限定する

テストPCでLenovo OEMビデオドライバーからIntel DCHビデオドライバーに切り替えたところ、SYSTEM_SERVICE_EXCEPTIONエラーが発生するようになったとします。DriverStore Explorerでそのドライバーの名前がiigd_dch.infであることがわかったので、Driver Verifier Managerのドライバーリストでこのドライバーに近いものを探します。通常、igdは「Intelグラフィックスドライバー」の略称なので、igdkm64.sysという項目を選択します。

SYSTEM_SERVICE_EXCEPTION ブルースクリーン

(画像提供:Tom's Hardware)

4. 「完了」をクリックしてチェックを続行します。次に、ドライバー検証マネージャーから、ドライバーのチェックを開始するにはPCを再起動する必要があるという警告が表示されます。

5. 「OK」をクリックし、PCを再起動すれば準備完了です。システムの再起動後、Driver Verifier Managerが処理を実行するため、起動シーケンスに少し時間がかかる場合があります。しばらくお待ちください。Driver Verifier Managerは署名されていないドライバーや疑わしいドライバーを検出すると、BSOD(ブルースクリーン)を表示します。

6.ポップアップ表示されるブルースクリーン メッセージをすべて記録し(スマートフォンで撮影しておくと便利です)、後で調査できるようにします。

BSODが発生した場合は、その後の調査が必要となり、適切な対応が必要になります。ほとんどの場合、Driver Verifierを使用した後、クラッシュダンプで特定されたドライバーを交換またはアップグレードすることで、システムを正常な状態に戻すことができます。

ブートループ(Driver Verifier が原因の繰り返しの BSOD)に陥った場合は、セーフモード(リンクを挿入)で起動する必要があります。その後、Driver Verifier にアクセスできます(コマンドプロンプトまたは PowerShell に「verifier」と入力)。Driver Verifier マネージャーの UI に入ったら、「既存の設定を削除」を選択し、「完了」をクリックします。次回の再起動後、自己誘発的な BSOD は発生しなくなります。

SYSTEM_SERVICE_EXCEPTION ブルースクリーン

(画像提供:Tom's Hardware)

ドライバー検証ツールの先にある最後の手段

それでもBSODループから抜け出せない場合は、より抜本的な対策が必要になるかもしれません。念のためバックアップとして作成したOSイメージを復元すれば、元の状態に戻ります。あるいは、Windowsの修復再インストールを30分ほど試すか、それでも不十分な場合はクリーンインストールと同じ方法でWindowsを完全にリセットするという方法もあります。最後の2つは明らかに最終手段です。

Ed Tittelは長年ITライター、リサーチャー、コンサルタントとして活躍し、Tom's Hardwareにも時折寄稿しています。2018年からWindows Insider MVPを務めており、OS関連のドライバー、トラブルシューティング、セキュリティに関するトピックを好んで取り上げています。