A completely healthy Windows C: drive is utterly useless if the tiny, hidden boot partition gets corrupted. Errors like `0xc000000f`, "BOOTMGR is missing", or "Inaccessible Boot Device" require surgical intervention using bootable recovery media.
1. The MBR vs. GPT Architecture
Before repairing a bootloader, you must know how your drive is formatted:
- Legacy BIOS (MBR): Uses the Master Boot Record. The boot code lives on the first sector of the drive. The "Active" partition contains the
bootmgrfile. - Modern UEFI (GPT): Uses the GUID Partition Table. The boot code lives in a tiny (100MB), hidden FAT32 partition called the EFI System Partition (ESP). This partition contains the
.efibootloader.
Over 95% of systems built after 2015 use UEFI/GPT.
2. The Standard Bootrec Arsenal (Often Fails)
If you boot from a Windows USB and enter the Command Prompt, the standard advice is to run:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
However, bootrec /fixboot almost always returns "Access Denied" on modern UEFI systems, rendering it useless. You must manually rebuild the EFI sector.
3. The Nuclear Option: Rebuilding the EFI Partition (UEFI/GPT Only)
If `bootrec` fails, we must manually assign a drive letter to the hidden EFI partition and use the `bcdboot` command to copy fresh boot files directly from the C: drive back into the EFI partition.
# 1. Open Diskpart and find the hidden EFI partition
diskpart
list volume
# Look for a 100MB volume formatted as FAT32, usually labeled "System" or "Hidden". Let's say it is Volume 3.
select volume 3
assign letter=S
exit
# 2. Rebuild the boot files onto the newly mounted S: drive
# (Assuming your main Windows installation is currently mounted as C:)
bcdboot C:\Windows /s S: /f UEFI
This command perfectly restores the boot chain, bypassing all "Access Denied" restrictions.
4. Advanced BCD Editing
The Boot Configuration Data (BCD) is a registry file that tells the bootloader where Windows lives. Use bcdedit to view its contents.
If you cloned a hard drive to a new NVMe and it won't boot, the BCD is likely pointing to the old drive's hardware UUID. Running the `bcdboot` command above automatically overwrites the BCD with correct UUIDs for the new hardware.