Bootrec /Fixboot 実行時に発生する「アクセスが拒否されました」エラーの解決方法
「Bootrec /FixBoot アクセスが拒否されました」というエラーが表示されるのは本当に面倒です。特にWindowsブートローダーの修復を試みている時はなおさらです。UEFIシステムでは、EFIシステムパーティション(ESP)がデフォルトで非表示になっており、マウントも解除されているため、Windowsはこのコマンドを古いBIOSセットアップとは少し異なる方法で処理します。そのため、FixBootがESPに書き込みを試みると、「アクセス拒否」エラーが発生し、行き詰まってしまいます。イライラしますよね?しかし、特にWindowsが正常に起動できない場合は、試してみる価値のある回避策があります。diskpartを使ってEFIパーティションを手動でマウントし、いくつかのコマンドを再実行するか、BCDBootを使ってブートファイルを再構築します。少し面倒ですが、他の修正方法がうまくいかない場合に有効な場合もあります。さらに、1707、1709、1803 などの一部の Windows バージョンでは、これがより一般的であるため、これらのバージョンを使用している場合は、追加のトラブルシューティングに備えてください。
UEFI で Bootrec /FixBoot を実行するときに「アクセスが拒否されました」を修正する方法
Diskpart を使用して EFI システム パーティションをマウントする
この方法は、FixBootがEFIパーティションをマウントしていないと認識できないため、役立ちます。ESPにドライブ文字を割り当てることで、Windowsが操作できる場所を指定できます。手順は以下のとおりです。
- WinRE 環境を起動し、[トラブルシューティング] > [詳細オプション] > [コマンド プロンプト]に移動します。
- まず、Windows がインストールされているディスクを特定します。
diskpart - すべてのディスクを一覧表示します:
list disk。プライマリディスク(通常はディスク0)を見つけて、 で選択します:sel disk 0。セットアップによっては、ディスクのサイズが小さい場合(約128 GBまたは256 GB)、それがメインドライブである可能性があります。 - 次に、EFIパーティションを見つけるために、すべてのボリュームを一覧表示します
list vol。System または FAT32 というラベルが付いた、サイズが100MB~200MB程度のボリュームを探します。System や Boot というラベルが付いている場合もあります。ボリューム番号は2または3です。 - そのボリュームを選択します
sel vol 2(異なる場合は 2 をボリューム番号に置き換えます)。 - 次のようにして、ドライブ文字(例えば R:)を割り当てます
assign letter=R。これは Windows が動作するために必要なことです。 - 入力し
exitて、diskpart を終了します。
EFIパーティションがマウントされたので、ブートファイルの修復を再度試みることができます。実行すればbootrec /FixBootうまくいくかもしれませんが、もしうまくいかない場合は、別の魔法のトリックがあります。
BCDBootを使用してブートファイルを再構築する
- EFIフォルダに移動します:
cd /d R:\EFI\Microsoft\Boot\。パスが見つからない場合は、次の方法を試してください。cd /d R:\Boot\cd /d R:\ESD\Windows\EFI\Microsoft\Boot\
- このコマンドを実行して、Windowsインストールからブートファイルをコピーします。実際のWindowsディレクトリと異なる場合は、
bcdboot C:\Windows /s R: /f UEFI必ず置き換えてくださいC:\Windows。このコマンドはBCD(ブート構成データ)を再構築し、必要なすべてのファイルをEFIパーティションにコピーします。 - オプションとして、まず既存の BCD をバックアップします。
ren BCD BCD.bak - 次に、新しい BCD ストアを再作成します
Bcdboot C:\Windows /s R: /f UEFI。 - 最後に、入力し
exitてマシンを再起動します。うまくいけば、「アクセス拒否」エラーが表示されずにシステムが再起動するはずです。
一つ覚えておいていただきたいのは、Windows が少々手間取る場合があるということです。EFI パーティションは扱いにくい場合があり、環境によってはコマンドを少し調整する必要があるかもしれません。しかし、多くの場合、これで問題なく動作するようになります。また、一部のマシンでは、このプロセスが少し不安定になることもあります。例えば、ランダムに動作したり、止まったり、また動作したりといった具合です。Windows は必要以上に処理を複雑にする必要があるためです。
すべてが失敗した場合: EFI を削除して自動修復を使用する
EFIパーティションをマウントして手動で修復しても問題が解決しない場合は、パーティションを完全に消去し、Windowsの自動ツールを使って復元を試みるという方法もあります。まず、Windows 10/11の起動メディアを作成します(1703などのバージョンの方が復元の許容度が高いため、そちらが望ましいです)。次に、リカバリモードで起動し、以下の手順を実行します。
- コマンドプロンプトを再度起動します。
- diskpart を使用して EFI パーティションを削除します。
diskpartlist disk- ドライブを選択してください:
sel disk 0 - ボリュームを一覧表示します:
list vol - EFIボリュームを見つけて選択します:
sel vol 2(またはボリュームの番号) - 削除:
delete volume
- diskpart(
exit)を終了し、回復メニューからスタートアップ修復ツールを実行します。このプロセスにより、EFIパーティションが最初から再構築され、根本的な破損が修復される場合があります。
この方法は少々過激ですが、EFIパーティションが破損していたり、設定ミスがあったりした場合は、根本的な原因を修復できる可能性があります。念のためお知らせしますが、パーティションの消去はリスクを伴うため、可能であれば必ずバックアップを取ってください。修復後、再起動してWindowsが正常に起動するかどうかを確認してください。
最後に
EFIブートの問題は、特にWindowsのアップデートや不正なディスク操作の後などに、予期せず発生することがあります。重要なのは、EFIパーティションを手動でマウントし、BCDBootを実行するか、BCDを直接修復することで、ブートプロセスが解除されることが多いということです。必ずしも明確な解決策があるわけではなく、セットアップによっては多少の試行錯誤が必要になることもあります。しかし、ほとんどの場合、この方法を使えば、OSを完全に再インストールすることなく、少なくとも問題を解決できる可能性があります。この方法が、誰かが頭を悩ませることなく元の状態に戻れる助けになれば幸いです。
まとめ
- diskpart を使用して EFI パーティションを手動でマウントし、ドライブ文字を割り当てます。
- FixBoot が失敗した場合は、BCDBoot を使用してブート ファイルを再構築またはコピーします。
- 必要に応じて、EFI パーティションを削除し、自動修復を使用してシステム ファイルを復元します。
- このプロセスは、ハードウェアと Windows のバージョンによっては不安定になる可能性があることに注意してください。
まとめ
UEFIの「アクセスが拒否されました」エラーを解消するのは少し冒険的ですが、根気強く適切なコマンドを使えば、たいていは解決できます。ただし、パーティション操作には十分注意してください。データを失うのは辛いものです。ほとんどの場合、EFIパーティションを手動でマウントし、BCDBootを使用すれば、最初からやり直すことなく問題を解決できる可能性があります。これでトラブルシューティングの時間が少しでも短縮されることを願っています。頑張ってください。