システム停止コードの特定
Windowsが予期せず再起動する場合、イベントビューアーのシステムログから詳細な停止コードを抽出できる。具体的には、イベントID 41(Kernel-Power)の「BugCheckCode」フィールドを参照する。値が0以外の場合、OSレベルのクラッシュが発生したことを示す。対応するBugCheckコードは、Microsoftの公式ドキュメントと照合し、クラッシュの初期分類を行う。
メモリダンプの収集設定と解析
クラッシュ発生時の状態を記録するには、システムプロパティより「小さなメモリダンプ(256KB)」を有効化し、保存先を既定の %SystemRoot%\Minidump に設定する。これにより、連続した障害発生時にもログが上書きされるリスクを軽減できる。
レジストリによる手動ダンプ生成
自動でダンプが生成されない場合、管理者権限のPowerShellで以下のコマンドを実行し、キーボードショートカットによる強制ダンプ生成を有効化する。
$regPath1 = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager"
Set-ItemProperty -Path $regPath1 -Name "GlobalFlag" -Value 0x00000400 -Type DWord
$regPath2 = "HKLM:\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters"
Set-ItemProperty -Path $regPath2 -Name "CrashOnCtrlScroll" -Value 1 -Type DWord
設定適用後、物理キーボードの左Ctrlキーを押下しながらScroll Lockキーを2回連続で押下することで、意図的なシステムクラッシュとメモリダンプの出力が可能となる。ノートPCなどScroll Lockキーを備えない環境では、外部キーボードの使用が必須である。
WinDbgによる詳細解析
Microsoft StoreからWinDbg Previewをインストール後、シンボルキャッシュ用の環境変数を設定する。
$env:SYM_CACHE = "C:\LocalSymbols"
$env:_NT_SYMBOL_PATH = "srv*$env:SYM_CACHE*https://msdl.microsoft.com/download/symbols"
WinDbgで対象の .dmp ファイルを開き、コンソール上で !analyze -v コマンドを実行する。出力結果の MODULE_NAME および IMAGE_NAME フィールドが、クラッシュを誘発したドライバーやカーネルモジュールを特定する主要な手がかりとなる。
障害源の切り分けフロー
停止コードやダンプ分析結果が毎回異なる場合、ログ単体での特定は困難となる。この場合は物理層と論理層を段階的に分離する。
1. ドライバーおよびサービス層の検証
セーフモードで起動し、サードパーティ製サービスが停止した状態でシステムが安定するかを確認する。安定する場合は、通常モード起動時に msconfig を利用し、「Microsoftのサービスをすべて隠す」チェックボックスをオンにした上で、残りのサービスを無効化して再起動テストを行う。
さらに確実な検証として、verifier.exe(ドライバー検証ツール)を管理者権限で起動し、標準検証設定を適用する。再起動後、システムが高度な監視状態となり、問題のあるドライバー実行時に強制クラッシュを誘発し、正確なダンプを生成させる。検証の解除は同ツールから「既存の設定を削除」を選択して再起動する。
2. ハードウェア層の検証
セーフモードでも不安定な場合は、物理コンポーネントの疑いが高い。Windows PE環境や外部ブートメディアからシステムを起動し、ディスクパーティション操作やメモリテストを実行する。操作中にフリーズが発生したり、I/O待ちが異常に高騰してストレージ認識が失われる場合は、SSD/HDDの物理故障や接続不良が疑われる。この場合、SATA/NVMeコネクタの再接続、接点の清掃、または代替ポートへの接続を試した後、OSのクリーンインストールでファイルシステムの破損を修復し、安定性を再評価する。
OSイメージ修復コマンドの実装
ドライバーとハードウェアに異常がない場合、システムファイルの破損を修復する。管理者権限のコマンドプロンプトまたはPowerShellで以下の順序で実行する。
:: 現在のOSエディション確認
dism /online /get-currentedition
:: システムイメージの健全性スキャン
dism /online /cleanup-image /scanhealth
:: スキャン結果に基づき修復可能性を評価
dism /online /cleanup-image /checkhealth
:: オンライン修復の実行(コンポーネントストアの再構築)
dism /online /cleanup-image /restorehealth
:: システムファイルチェッカーによる保護ファイルの修復
sfc /scannow
各コマンドはネットワーク接続を必要とし、修復プロセス中にログは %windir%\Logs\CBS\CBS.log に記録される。/restorehealth は破損したコンポーネントをWindows Updateサーバーから正常なコピーで置き換え、既存のユーザーデータや設定は保持する。sfc /scannow はより低レベルで保護されたシステムファイルの整合性を検証し、必要に応じてキャッシュされたDLLやEXEを復元する。