Windows が起動しなくなり、その原因がブート領域の破損だった・・・・という場合、「bootrec /fixboot」の実行は、定番の対処法の一つである。
しかし、その「bootrec /fixboot」を行うと「アクセスが拒否されました」とメッセージが出てしまい、復旧作業がそれ以上進まなくなってしまう・・・という症状が時々発生する。
正直な話、この状態になると復旧は大変である。しかも Windows 10 バージョン1607 か 1703 あたりから、今まで定番だった対処方法でも復旧できないケースが増えてきた。
このページは、そんな場合の対処方法も含めている。
注意事項
- 中~上級者向けです。
操作を間違えると、Windows が起動しなくなります。 - このページは UEFI 専用です。
MBR環境でこの問題が発生した場合、このページの手順は通用しません。 - このページではBCD領域の削除や再作成を何度行っても、「bootrec /fixboot」で「アクセスが拒否されました」を繰り返す場合の対処手順のみを記しています。
- BCD領域の削除や再作成の手順そのものについては
- Windows10が起動しなくなった時 (エラー 0xc000000f) の対処方法
- エラー 0xc0000034/0xc000014c (Windowsが起動しなくなった時) の対処方法
- UEFI/GPTインストールしたWindowsの「ブート領域」の復旧方法
対処方法
まずはざっくり解説。
大きく分けて4つの対処方法がある。
- FAT32 の EFI システムパーティションなど、隠しドライブに対し chkdsk を行う
- EFI システムパーティションをフォーマット、その後BCDを再作成する
- Windows を部分的にクローンする
- クリーンインストールで環境を失いたくない場合に行う。
- Cドライブのみクローン (※他の隠しドライブはクローンしない) を行い、OSのクリーンインストール → Cドライブのみクローンという手順でリカバリする・・・・等の操作を行う。
- Windows が正常に起動するのであれば、気にせず放っておく
- Windows をクリーンインストールする
- 上記1.~4. で効果がなかった、または手順が難しいという場合は、これしかない。
- ブート領域に問題が発生しているので「上書きインストール」や「新たに開始」では問題が解決しないケースが出ると思われる。
軽症の場合、chkdskのみで問題が解決することもある。
重症の場合、「2.」または「3.」が必要。
「4.」については直下の「4. について補足」を読む。
4. について補足
- Windows 10 バージョン 1607 または 1703 の頃から、メジャーアップデートを行った環境では
- 「bootrec /scanos」等が異常な値を返しても正常に Windows が起動する
- 「bootrec /fixboot」がアクセスが拒否される
- そのような環境でも Windows が正常起動するケースも多く、Windows の動作に特に問題が起きていない状態であれば、これを気にしても仕方がない感じ。
ざっくり説明ここまで。
以下、上記「1.~3.」の手順説明
具体的手順
まず前準備: PCの起動
PCは、Windows の インストールメディアから起動する。
※ この時、メディアの起動を UEFI と 旧BIOS で間違えない事。
そして コマンドプロンプト起動を起動、「diskpart」で隠しドライブ(ブート領域)を探し、ドライブレターを付けるする。
- > diskpart
diskpart> list volume (システムドライブを確認する)
diskpart> select volume X (FAT32のパーティションを選択)
diskpart> assign letter b: (ドライブレター例)
diskpart> exit - 重要: パーティションのフォーマットが目的の場合、ラベル名を覚えておく。
1. chkdskする場合
引きつづき、回復環境上のコマンドプロンプトで行う。
- chkdsk c: /f #・・・・Windowsのシステムパーティション
chkdsk b: /f #・・・・EFIシステムパーティション - 注意1
- 上記は、
回復環境のドライブ・・・・X
Windows システム ・・・・ Cドライブ
EFIパーティション ・・・・ Bドライブ
という場合である。
- 上記は、
- 注意2
- 注意3
- 何かしらのエラーが発見された場合、エラーが出なくなるまでchkdsk を繰り返す。
- 必要に応じ、パラメータを「/f」ではなく「/r」に変更し、ガッツリとエラー修正する必要があるかもしれない。
2. EFIパーティションをフォーマットする場合
以下も回復環境上のコマンドプロンプトで行う。
「bootrec /fixboot」で「アクセスが拒否されました」が出る場合、EFIパーティションをフォーマットし、そこからBCDを再作成するのが定番の問題解消法になる。
- フォーマットのコマンド (B:ドライブをFAT32でフォーマット)
format b: /FS:FAT32 - BCDの再作成
cd /d b:
bootrec /Rebuildbcd
※ bootrec /scanos でもいい
bootrec /fixboot ※実は実行しなくてもOK
bcdboot c:\Windows /l ja-JP /s b: /f ALL
bcdboot c:\windows /s b: /f UEFI (これは個人的メモ)
※ bcdboot c:\Windows /l ja-JP だけでもいい
exit - EFIパーティションをフォーマットしてる例
※ 下図では、EFIパーティションを「S:」に設定している
▲クリックで拡大
※ 途中でラベル名の入力があるため、ラベル名を覚えておく必要がある
※ここで裏技紹介
chkdsk や formatは、コマンドを打たなくてもメモ帳からGUI操作できる。
▲クリックで拡大
Windows 回復環境のコマンドプロンプトでも「notepad」と打つとメモ帳が起動する。
メモ帳で「保存」や「開く」を選択するとエクスプローラのメニューが開くので、そこから「フォーマット」や「プロパティ > ツール」でチェックディスクを行うことが可能。
回復環境から行う手順の紹介、ここまで
ここまでの手順を行えば、大抵は「bootrec /fixboot」の「アクセスが拒否されました」というエラーは解消しているはず・・・・と言いたい所だが、ここまでやっても「アクセスが拒否されました」が消えない場合がある。
まだ 問題が発生している場合、別の角度からアプローチを行う。
まだこの問題が発生している場合
- Windows が正常起動するかどうか確認する
- Windows が正常起動する場合
・・・・ Windows 10 バージョン 1607 または 1703 あたりから、「bootrec /fixboot」が「アクセスが拒否されました」となるようなPCでも、Windows が正常起動し、かつこの問題が修正できないケースが増えた。個人的な見解だが、この場合はそういうモノだとあきらめて、そのまま使うのが良いと思っている。 - Windows が正常起動しない場合 1
電源ボタン長押し強制終了状態や、シャットダウン 状態からであれば起動する場合- Windows 起動 → Ctrl + Alt + Delete 同時押し → 表示されたメニューから「再起動」を選ぶ ※注意: すべての環境で効果があるわけではない
- サイト内関連
Windows を「再起動」した時だけ 正常起動しない、画面が真っ暗になる
- Windows が正常起動しない場合 2
次項「3. Windows を部分的にクローン・レストアする」を行う。
- Windows が正常起動する場合
3. Windows を部分的にクローン・レストアする
クローンツールなら何でもOKだと思う。
個人的には Paragon Backup & Recovery を使っている。というか、こういう用途の場合は EaseUS Todo Backup などよりも、Paragon Backup & Recovery が使い勝手が良い。
こんな感じで、Cドライブだけをバックアップ対象にする。
▲クリックで拡大
細かい手順は割愛する。以下はざっくり解説。
- バックアップの作製が終わったら、バックアップ元のドライブは パーティションを全削除した上でクリーンインストールを行う。(新品のストレージを用意してもOK)
- クリーンインストール終了後、バックアップしておいたCドライブを新規にクリーンインストールしたCドライブに復元させる。
- クリーンインストールで欲しいのは、新しく作成された「正常なブート領域」と「正常なストレージ構成」である。
- そこに、以前のCドライブのファイルを展開していけば、無事、以前とほぼ同じPC環境が出来上がる。
- ブート領域が壊れるより前に、事前に FAT32 の EFI パーティションをバックアップしていた場合であれば、その FAT32 の EFI パーティションを復元する事で正常な状態に戻すことも可能。
- 余談
- 個人的な話になるが、回復環境から bootrec /rebuildbcd などのコマンドを入力する自信が無かった頃、私は「EFI パーティションを事前にバックアップ、問題が起きたらバックアップから復元」という方法でブート領域の問題を解決していた。
このページの情報は以上。
サイト内の関連した更新から2~3年の時が建ってしまったが、この手のエラーに対してようやく経験値が貯まって来たので続きを書いた次第。