Issue
On a computer with two Windows 10/11 installations, each Windows Boot Loader object must identify the partition containing that installation. If one loader’s device or osdevice value points to the other Windows partition, a stale partition, or a device that no longer exists, selecting it can boot the wrong Windows installation, return to the boot menu, or stop at a Recovery screen naming \Windows\System32\winload.efi.
The important distinction is between Windows Boot Manager, which displays and selects menu entries, and each Windows Boot Loader object, which identifies one installation. For a normal UEFI Windows loader, device identifies the volume containing the boot application, osdevice identifies the volume containing the Windows system root, path is normally \Windows\System32\winload.efi, and systemroot is normally \Windows.
This writeup is intentionally limited to UEFI/GPT installations. Before making a repair, the Windows disk must be shown as GPT, the loader must use the UEFI path, and the EFI System Partition (ESP) that firmware actually uses must be proven. A FAT32 partition or a BCD file on its own is only a candidate. BIOS/MBR installations normally use winload.exe; they are excluded from this procedure and must not be forced to use winload.efi or UEFI-only BCDBoot options.
Searchable Windows error codes and exact messages
| Displayed identifier | Windows name or exact message | When it can apply |
|---|---|---|
0xc000000e | STATUS_NO_SUCH_DEVICE; A required device isn't connected or can't be accessed; The application or operating system couldn't be loaded because a required file is missing or contains errors | The selected BCD object specifies a device that does not exist or no longer resolves to the intended Windows volume. |
0xc000000f | The Boot Configuration Data for your PC is missing or contains errors; The application or operating system couldn't be loaded because a required file is missing or contains errors | BCD is damaged, or device/osdevice is missing, unknown, or points to the wrong location. |
0xc0000225 | STATUS_NOT_FOUND; A required device isn't connected or can't be accessed | Boot Manager cannot resolve the selected loader’s required device or file. |
0xc0000034 | The Boot Configuration Data file is missing some required information | The BCD cannot provide the information needed to locate the Windows installation. |
0xc0000098 | The Boot Configuration Data file doesn't contain valid information for an operating system or Windows failed to load because a critical system driver is missing or corrupt | Can accompany an invalid loader object, but can also mean an actual file or version mismatch. Inspect the named file and message. |
0xc0000428 | Windows cannot verify the digital signature for this file; The digital signature for this file couldn't be verified | The selected entry reached a loader whose signature is invalid or whose version does not match the intended installation. This is not repaired by changing partitions unless the entry demonstrably points to the wrong copy. |
| No numeric code | Choose an operating system; selecting one entry starts the other Windows installation | Both loader objects exist, but one maps to the wrong device/osdevice. |
| File field | \Windows\System32\winload.efi | The UEFI Windows loader named on the Recovery screen. The path alone does not prove the file is missing. |
Search the complete status, full message, file path, and the menu entry that was selected. The same status can result from a missing disk, corrupt BCD, cloned partition identifiers, or a genuinely damaged winload.efi.
Applies when
Use this procedure when two Windows 10/11 installations are intentionally present and readable on a confirmed UEFI/GPT system, at least one can start or WinRE can read both, and BCD enumeration shows that one Windows Boot Loader object points to the wrong Windows partition, an obsolete partition, or an unknown device. It also applies when the correct installation exists but its boot-menu entry is missing and can be safely recreated in the proven firmware-used ESP with UEFI BCDBoot.
Does not apply when
Do not use this procedure on a BIOS/MBR installation, when firmware mode and partition style do not agree, when the firmware-used ESP cannot be proven, when the physical disk is missing or unstable, winload.efi is actually absent or signature-invalid on the correct partition, the problem is solely a missing UEFI NVRAM Windows Boot Manager entry, the installations were cloned with conflicting disk or partition identifiers, Linux GRUB is the only boot manager being displayed, or one Windows installation is mid-upgrade or rollback. A single-installation BCD failure should use the corresponding single-installation boot-file writeup.
Information that may remain unknown
The exact Windows build and the event that created the wrong loader may remain unknown. The UEFI/GPT boot architecture, which partitions contain the two Windows installations, which ESP firmware actually uses, which loader GUID belongs to each installation, and whether winload.efi exists on the intended volume may not remain unknown.
Requirements
- A working Windows installation or Windows Recovery Environment
- Administrator access
- UEFI firmware boot and a GPT Windows disk confirmed before repair
- Both intended Windows partitions consistently readable
- The disk and partition layout detected with DiskPart
- The firmware-used ESP proven, not merely inferred from FAT32 format or a System label
- The active BCD store exported or copied before changes
- The GUID of the exact loader being repaired
- A distinct description for each intentionally retained Windows entry
- Command Prompt rather than PowerShell, unless GUIDs are quoted in PowerShell
Starting position
Do not delete any loader. First record the Recovery screen, the menu entry selected, and which Windows installation actually starts. If either Windows installation is running Setup, applying an update, or rolling back an update, allow that process to finish or use its documented recovery path before normalizing the dual-boot menu.
Confirm the diagnosis
-
Record the complete Recovery screen, including status, file path, and the description of the boot-menu entry that was selected.
-
Enter a working Windows installation or open Command Prompt from WinRE.
-
Detect the disk and partition layout:
diskpart list disk list volume -
On each disk that contains Windows, inspect its partitions without changing them:
select disk <number> list partition detail disk -
In DiskPart, identify:
- Each large NTFS volume that may contain a Windows directory
- The
*in theGPTcolumn for every Windows disk inlist disk - Each small FAT32 System partition that is a candidate ESP
- Any second candidate ESP on the same or another disk
If the Windows disk is not GPT, stop. This UEFI/GPT procedure does not apply.
-
Assign temporary letters first to the Windows volumes that need inspection and do not already have one:
select volume <number> assign letter=WUse a different available letter for the second Windows partition. Do not assign
S:to an ESP merely because it is FAT32. In the examples below,W:means the verified Windows installation being repaired andS:means the proven firmware-used ESP. They are placeholders, not assumptions. -
Exit DiskPart:
exit -
Confirm each Windows installation by inspecting its own directory:
dir W:\Windows dir W:\Windows\System32\winload.efiRepeat with the other detected Windows volume. Do not use a volume merely because it contains a folder named
Boot; the intended volume must contain a coherent Windows directory. -
Prove which ESP firmware uses before editing an offline store or supplying
/sto BCDBoot:-
From a running UEFI Windows installation, use an unused letter and let Windows mount its system ESP:
mountvol S: /s dir S:\EFI\Microsoft\Boot\BCD bcdedit /enum firmware /vA successful
mountvol /s, a matching Windows Boot Manager firmware entry, and the expected Microsoft boot path establish the repair target for the running system. -
From WinRE, enumerate firmware with
bcdedit /enum firmware /vand correlate the Windows Boot Manager entry's device/path with a candidate ESP before assigningS:. Inspect candidates read-only. The presence of\EFI\Microsoft\Boot\BCDon a partition is not proof by itself. -
If multiple ESPs remain plausible, the firmware entry cannot be correlated, or
mountvol /sselects a different ESP than expected, stop. Do not guess which store firmware starts.
-
-
If working inside an installed Windows session, create the backup and enumeration:
md C:\BootRepairBackup
bcdedit /enum all /v > C:\BootRepairBackup\BCD-before-wrong-loader.txt
bcdedit /enum firmware /v > C:\BootRepairBackup\Firmware-before-wrong-loader.txt
bcdedit /export C:\BootRepairBackup\BCD-before-wrong-loader
-
If working in WinRE, assign
S:only to the proven firmware-used ESP. Then enumerate its store explicitly:bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum all /vIf the file does not exist at that path, stop and re-establish which ESP firmware uses. Do not create a new store on the first FAT32 partition found.
-
Copy the offline store before modifying it. Store the backup on the verified Windows volume or separate media:
md W:\BootRepairBackup copy S:\EFI\Microsoft\Boot\BCD W:\BootRepairBackup\BCD-before-wrong-loader -
For every Windows Boot Loader object, record:
identifierdescriptiondevicepathosdevicesystemrootresumeobject
-
Map each loader GUID to the Windows partition it is supposed to start. The descriptions may be identical, so do not use the description alone.
-
Confirm the mismatch. The diagnosis is strong when the selected loader’s
deviceorosdeviceidentifies the other Windows partition or an unknown/nonexistent device whileW:\Windows\System32\winload.efiexists on the intended partition. -
Interpret adjacent findings:
- If
winload.efiis missing on the correct partition, stop and repair the file/component source. - If the disk or partition disappears between scans, stop and diagnose storage.
- If two cloned partitions carry conflicting identifiers, stop and resolve the clone identity before editing loader fields.
- If more than one ESP exists and the firmware-used store cannot be proven, stop. Writing a correct entry into an unused ESP changes nothing and can create further confusion.
- If
Resolution steps
Branch A — Correct one existing loader from a working Windows installation
Use this branch when one Windows installation starts and the exact incorrect loader GUID and intended Windows volume are proven.
-
Confirm that the BCD export in section 7 completed successfully.
-
Replace
{<loader-GUID>}below with the exact identifier, including braces, and replaceW:with the detected intended Windows volume:bcdedit /set {<loader-GUID>} device partition=W: bcdedit /set {<loader-GUID>} osdevice partition=W: bcdedit /set {<loader-GUID>} path \Windows\System32\winload.efi bcdedit /set {<loader-GUID>} systemroot \Windows -
Give the repaired entry a distinct description that identifies the intended installation without relying solely on a transient drive letter:
bcdedit /set {<loader-GUID>} description "Windows 11 - Secondary installation"Use the actual version and a meaningful disk or purpose label.
-
Do not manually copy the working installation’s
resumeobjectinto this loader. Each Windows installation normally has its own Windows Resume Application object. -
Re-enumerate the repaired object:
bcdedit /enum {<loader-GUID>} /v -
Verify all four location fields before restarting.
-
Set a temporary menu timeout long enough to select the repaired entry during testing:
bcdedit /timeout 15 -
Restart and select the repaired entry once.
-
In the Windows installation that starts, confirm its identity with
winver, its expected files, and its expected applications. Do not assume the repair succeeded merely because a Windows desktop appeared.
Branch B — Correct the loader in the offline UEFI BCD store
Use this branch when neither entry can be safely edited from a running installation but both Windows partitions and the proven firmware-used ESP are readable in WinRE.
-
Confirm that
S:is the proven firmware-used ESP,W:is the intended Windows partition, and the BCD file was copied as shown in section 7. -
Enumerate the exact loader again:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum {<loader-GUID>} /v -
Set the four location values:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {<loader-GUID>} device partition=W: bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {<loader-GUID>} osdevice partition=W: bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {<loader-GUID>} path \Windows\System32\winload.efi bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {<loader-GUID>} systemroot \Windows -
Set a distinct description if the two entries are indistinguishable:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {<loader-GUID>} description "Windows 11 - Secondary installation" -
Re-enumerate the loader and the boot manager:
bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum {<loader-GUID>} /v bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum {bootmgr} /v -
Confirm that the repaired GUID appears in
displayorder. If it does not, add it last without replacing the other valid entries:bcdedit /store S:\EFI\Microsoft\Boot\BCD /displayorder {<loader-GUID>} /addlast -
Restart and test the repaired entry.
Branch C — Recreate or refresh a missing/incoherent Windows entry with BCDBoot
Use BCDBoot when the intended installation is readable but has no usable loader object, or when its entry is internally inconsistent beyond the four demonstrated location values. Do not use /c; it intentionally discards preserved settings and is unnecessary here.
-
From a running UEFI/GPT Windows session, confirm the target Windows directory and the firmware-used ESP established in section 7. Stop if either is uncertain.
-
Preserve the existing default Windows entry and UEFI firmware order while adding or refreshing the target installation:
bcdboot W:\Windows /f UEFI /d /p /v/pis used here only because this article has already confirmed UEFI; it preserves the existing position of Windows Boot Manager in the UEFI firmware order. Do not copy this command to a BIOS/MBR system. -
Enumerate all loaders:
bcdedit /enum osloader /v -
Identify the entry whose location corresponds to
W:\Windows. Give it a distinct description. -
If working in WinRE and the exact firmware-used ESP is proven, copy the boot files to that ESP:
bcdboot W:\Windows /s S: /f UEFI /d /vOn UEFI, specifying
/sprevents BCDBoot from creating a new NVRAM entry. This branch assumes the existing Windows Boot Manager NVRAM entry already reaches this ESP. If it does not, stop and use the missing-UEFI-entry procedure instead. -
Re-enumerate the offline store after BCDBoot and identify any newly created loader GUID before changing menu order.
Branch D — Normalize the menu after both Windows installations boot
Do this only after each retained entry has booted its intended installation. First record the complete current displayorder; every verified retained GUID must remain in it.
-
Set the preferred default:
bcdedit /default {<preferred-loader-GUID>} -
Move the preferred loader to the beginning without replacing any third or later retained entry:
bcdedit /displayorder {<preferred-loader-GUID>} /addfirstIf another verified loader needs to be moved to the end, preserve all others with:
bcdedit /displayorder {<loader-to-move-GUID>} /addlastA replacement command that lists several GUIDs is safe only when it includes every verified retained menu entry. Never issue a two-GUID replacement on a menu that also contains a third retained loader.
-
Set the desired timeout:
bcdedit /timeout 10 -
If an old broken entry remains, hide it from the menu first rather than deleting it:
bcdedit /displayorder {<old-bad-GUID>} /remove -
Restart and boot each retained entry twice.
-
Only after the old GUID is proven unused may it be deleted from the store:
bcdedit /delete {<old-bad-GUID>}
Expected results and branches
- The repaired menu entry boots the intended Windows installation: The location values were the cause.
- It boots the other installation again: Recheck the GUID-to-partition map and possible clone identifier conflicts. Do not keep changing letters blindly.
- The code changes to
0xc0000428: The correct partition may now be selected, exposing a real signature or version problem. - The code changes to
0xc0000098and names a file: Verify the exact file against the installed build; do not return to BCD edits automatically. - BCDBoot creates a second correct entry: Test it, then hide the old entry. Do not delete either until both are mapped.
- BCDBoot writes to a different ESP: Stop and determine which ESP the firmware actually starts.
- One Windows installation has no separate resume object: The installation may still cold-boot, but hibernation for that installation requires a separate verification or hibernation-file reset from within that Windows instance.
- The disk becomes unavailable: Leave BCD unchanged and diagnose storage/controller access.
Do not do this
- Do not delete
{bootmgr},{fwbootmgr},{current},{default},{memdiag}, recovery objects, or resume objects based on their descriptions. - Do not assume WinRE assigned the Windows partitions the same letters they use when running.
- Do not copy one installation’s
resumeobjectto the other. - Do not run
bootrec /rebuildbcdmerely because one loader points to the wrong volume. - Do not use BCDBoot
/cunless a separate procedure has proven that a fresh store is required. - Do not format an ESP, change partition types, or mark partitions active for this condition.
- Do not force
winload.efionto a BIOS/MBR installation that correctly useswinload.exe. - Do not delete an old entry before both intended Windows installations have passed repeated boot tests.
- Do not use the menu description alone to decide which GUID is valid.
Rollback
From the same working Windows environment in which the export was created, restore the system BCD store with:
bcdedit /import C:\BootRepairBackup\BCD-before-wrong-loader
Import replaces the current system-store entries with the exported backup. Restart and verify the original menu.
For an offline repair, boot to WinRE, redetect the Windows and ESP letters, and copy the saved BCD file back:
copy /y W:\BootRepairBackup\BCD-before-wrong-loader S:\EFI\Microsoft\Boot\BCD
If only one field was changed and the original values are known from BCD-before-wrong-loader.txt, restore the original device, osdevice, path, systemroot, default, and display order individually. Do not invent a rollback value from another computer.
If BCDBoot created a new entry, the conservative rollback is to remove that new GUID from displayorder first. Delete it only after the original entry is restored and tested.
Verification
- Each retained menu entry starts its intended Windows installation twice.
bcdedit /enum osloader /vmaps each GUID to the correct detected partition.- Each UEFI loader uses
\Windows\System32\winload.efiandsystemroot \Windows. - The preferred default loads after the configured timeout.
- Menu descriptions are distinct and accurate.
- No
0xc000000e,0xc000000f,0xc0000225, orwinload.efiRecovery screen appears. - Restart and cold shutdown/power-on both work for each installation.
- Hibernation is tested separately from inside each installation if it is used.
- The ESP and Windows partitions remain unchanged apart from the intended BCD/boot-file update.
Confidence and stop conditions
Confidence is high when the failing loader GUID demonstrably points to the wrong partition, the intended partition contains a coherent Windows installation and winload.efi, and correcting that one object makes the intended installation boot. Confidence is moderate when BCDBoot recreates a missing entry but the original corruption mechanism is unknown. Stop when UEFI/GPT cannot be confirmed, the firmware-used ESP cannot be established, multiple ESPs remain ambiguous, cloned disks have conflicting identifiers, a disk disappears, the correct winload.efi is missing or signature-invalid, an installation is mid-upgrade, or repeated BCD corrections continue to resolve to the wrong cloned partition.