Issue
Windows starts only after the user opens a one-time boot menu, only while a bootable USB device is connected, or from the wrong Windows installation after restart. The intended Windows installation and its internal drive are readable, but firmware is starting another disk, a USB entry, a stale Windows Boot Manager entry, or a port-priority path first.
The first repair is boot-order correction, not BCD reconstruction. Boot files are refreshed only when the intended internal entry is missing or demonstrably invalid. Disk/partition layout is detected only for that branch; the reader does not need to know a firmware-mode label in advance.
Searchable Windows and firmware identifiers
| Displayed identifier | Exact or common message | When it can apply |
|---|---|---|
| No numeric code | Windows Boot Manager followed by a drive model | Preferred UEFI entry for the intended Windows installation. The model/partition association must be verified. |
| No numeric code | Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key | Firmware did not start a usable loader from its first choice. This is a firmware message, not a Windows error code. |
| No numeric code | No bootable device / Boot device not found | Firmware did not find a bootable path. An order problem is only one possibility. |
| No numeric code | An operating system wasn't found. Try disconnecting any drives that don't contain an operating system. | The selected BIOS/MBR path did not reach the intended Windows loader. |
0xc000000e | STATUS_NO_SUCH_DEVICE; commonly A required device isn't connected or can't be accessed | A selected BCD store points to an unavailable device. It is not proof that firmware order alone is wrong. |
0xc0000225 | STATUS_NOT_FOUND; commonly A required device isn't connected or can't be accessed | The selected boot path cannot resolve a required object, device, or file. |
0xc000000f | STATUS_NO_SUCH_FILE; commonly The Boot Configuration Data for your PC is missing or contains errors | The selected entry reached Windows Boot Manager but its boot files or BCD path are not usable. |
0xc0000098 | STATUS_FILE_INVALID; when File: \BCD, commonly The Boot Configuration Data file doesn't contain valid information for an operating system | Route by the displayed file and information fields; the code can also name a driver or system file. |
| No numeric code | Boot files successfully created. | Expected BCDBoot output if the missing-entry branch is used. It does not by itself prove firmware will select that entry. |
| No numeric code | Failure when attempting to copy boot files. | Stop the BCD branch; the source, system partition, free space, file system, or storage path is wrong or unhealthy. |
Applies when
Use this procedure when at least one of these controlled tests is true:
- selecting the intended internal Windows Boot Manager entry from the one-time boot menu starts the correct Windows installation;
- Windows starts only while a UEFI-capable USB device is attached, and selecting the internal Windows Boot Manager entry manually also works;
- a dual-drive computer consistently starts the wrong Windows installation unless the intended drive is selected manually; or
- firmware has no editable per-drive order but demonstrably prioritizes one SATA port, and the intended drive starts normally when selected from its one-time menu.
The internal drive must be consistently detected and the intended installation must boot when deliberately selected.
Does not apply when
Do not use this procedure when the intended Windows Boot Manager entry is selected manually and still fails, the drive disappears, the partition table or file system is damaged, the EFI System Partition was deleted, the BCD is known to reference the wrong Windows installation, or Windows starts but later black-screens or crashes.
It also does not apply to a deliberately configured GRUB, Linux, hypervisor, VHD, or other multiboot manager without a multiboot-specific plan. Changing order can bypass the manager that owns access to every installed system.
Do not swap SATA cables on NVMe systems, laptops not designed for user servicing, devices under warranty restrictions, or systems whose firmware offers a working per-drive priority control.
Information that may remain unknown
The firmware vendor's exact menu wording, why its order changed, and whether an update or power loss triggered the change may remain unknown.
The following may not remain unknown before a change:
- the intended Windows installation and its internal physical drive;
- the exact one-time boot entry that starts it;
- the current persistent boot order;
- whether a USB device merely exposes the menu or actually supplies boot files;
- whether another boot manager is intentional; and
- for any BCDBoot branch, the intended Windows volume, disk number, partition style, system partition, existing BCD, and pre-change firmware entries.
Firmware mode itself may remain unknown for the order-only branch. Partition style and system partition type determine the BCDBoot branch if boot files must be repaired.
Requirements
- A verified backup of important files
- Stable power
- Access to the firmware one-time boot menu and setup utility
- A camera or written record of the original boot order and drive identifiers
- Windows Recovery Environment or current Windows installation media for the missing-entry branch
- Administrator Command Prompt
- A record of each internal drive's model, size, and purpose
- A readable copy of the existing BCD before BCDBoot changes it
- Physical-service instructions and antistatic precautions if a SATA cable/port branch is necessary
If the drives cannot be distinguished unambiguously, stop before changing order or boot files.
Starting position
-
Disconnect external hard drives, memory cards, optical media, and unrelated USB storage. Keep only the keyboard, pointing device, display, and recovery media deliberately in use.
-
Photograph the current firmware boot-order screen and every similarly named Windows Boot Manager entry.
-
Record internal drive models and sizes from firmware, the one-time menu, Disk Management, or DiskPart.
-
If Windows can be started by manual selection, open Command Prompt (Admin) and preserve current entries in a new unused attempt directory. Increment the attempt number rather than merging later evidence into it:
set "EVID=%SystemDrive%\BootOrderEvidence\FIX060-Attempt-01" if exist "%EVID%\" (echo STOP: %EVID% already exists. Set EVID to the next unused FIX060 attempt and rerun this block. & exit /b 1) md "%EVID%" if errorlevel 1 (echo STOP: Could not create %EVID%. & exit /b 1) echo FIX-060 online boot-order evidence>"%EVID%\attempt-marker.txt" bcdedit /enum firmware /v > "%EVID%\firmware-before.txt" bcdedit /enum all /v > "%EVID%\bcd-all-before.txt" msinfo32 /nfo "%EVID%\msinfo32-before.nfo"If
FIX060-Attempt-01already exists, stop and choose the next unused number; do not overwrite it. -
Do not change Secure Boot, UEFI/legacy mode, controller mode, disk layout, or Active flags.
Confirm the diagnosis
-
Start the computer and open its one-time boot menu without saving changes.
-
Select the internal Windows Boot Manager entry associated with the intended drive. If no drive model is shown, test entries one at a time and record the result.
-
After Windows starts, verify that it is the intended installation:
echo %SystemDrive% bcdedit /enum {current} /vConfirm the expected user profile, edition, and files. Do not rely on the wallpaper alone.
-
Repeat the one-time selection once. A single accidental success is insufficient.
-
If the intended entry works twice but normal startup chooses another entry, no BCD write is justified: this is the order-only branch.
-
If Windows starts only with a USB connected, remove the USB and use the one-time menu again:
- if the internal Windows Boot Manager entry exists and works, firmware order or USB priority is supported;
- if the internal entry is absent, but the USB's Repair your computer environment can see Windows, the missing-entry branch may apply;
- if the USB appears to supply the only working boot files, do not call it an order-only problem.
-
In a manually booted Windows session, enumerate firmware entries:
bcdedit /enum {fwbootmgr} /v bcdedit /enum firmware /vRecord the
displayorderand each entry's device/path. Do not delete duplicates here. -
If the internal entry is missing or fails and BCDBoot is being considered, enter WinRE Troubleshoot > Advanced options > Command Prompt and detect the layout:
diskpart list disk list volume -
Assign
W:to the already-identified Windows volume only afterlist volumeproves the letter is unused:select volume <Windows-volume-number> detail volume assign letter=W detail volume exit -
Verify the installation:
dir W:\Windows\System32\Config\SYSTEM dir W:\Windows\System32\Config\BCD-Template -
Map
W:to its physical disk and inspect the partition style. A*in DiskPart'sGPTcolumn routes to UEFI/GPT. No*on a verified basic MBR disk routes to BIOS/MBR. Do not convert either layout. -
For UEFI/GPT, identify the small FAT32 System volume on the same intended disk. For BIOS/MBR, identify the verified Active NTFS system partition. Record contents and copy every readable BCD store before a write.
-
Stop if the intended disk is not consistently detected, more than one system partition remains ambiguous, the correct one-time entry does not boot, or the file system reports I/O errors.
Resolution steps
Choose one branch. Do not combine order, BCD, and physical-port changes in the same attempt.
Branch A — The intended internal Windows Boot Manager entry works
- Enter firmware setup.
- Open the persistent boot-order or boot-priority page. Menu names vary; use the documented boot-order control, not a storage-controller page.
- Move the verified internal Windows Boot Manager entry above USB, network/PXE, optical, and other internal-disk entries.
- Do not move a generic drive name above Windows Boot Manager unless the one-time test proved that generic entry is the working path.
- Save changes and shut down completely.
- Remove the bootable USB and start the computer.
- If the firmware does not retain the setting, replace its clock/CMOS battery only after confirming that time and other settings also reset and the device is safely serviceable.
Branch B — The UEFI Windows Boot Manager entry is missing, but Windows and its EFI System Partition are healthy
-
Disconnect other bootable internal disks when serviceable, or stop if the correct system partition cannot be made unambiguous.
-
In WinRE, detect and assign
W:as described above. -
Assign
S:to the verified FAT32 EFI System Partition on the intended disk:diskpart select disk <Windows-disk-number> select partition <EFI-partition-number> detail partition assign letter=S detail partition exit -
Create a new unused WinRE attempt directory, preserve the current BCD when readable, and copy the complete readable EFI tree off the ESP before BCDBoot refreshes files:
set "EVID=W:\BootOrderEvidence\FIX060-Attempt-01" if exist "%EVID%\" (echo STOP: %EVID% already exists. Set EVID to the next unused FIX060 attempt and rerun this block. & exit /b 1) md "%EVID%" if errorlevel 1 (echo STOP: Could not create %EVID%. & exit /b 1) echo FIX-060 UEFI missing-entry attempt>"%EVID%\attempt-marker.txt" echo Windows=W: ESP=S:>>"%EVID%\attempt-marker.txt" copy S:\EFI\Microsoft\Boot\BCD "%EVID%\BCD-before" bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum all /v > "%EVID%\BCD-before.txt" robocopy S:\EFI "%EVID%\EFI-before" /E /COPY:DAT /R:0 /W:0 set "RC_EFI_BACKUP=%ERRORLEVEL%" echo EFI backup Robocopy exit code: %RC_EFI_BACKUP%>"%EVID%\efi-backup-result.txt"If the BCD is absent or unreadable, record that exact condition instead of fabricating a backup. Require the EFI-tree Robocopy result to be 0–7 with no failed files and inspect the copied Microsoft loader files. If the attempt directory already exists, use the next unused number. Stop before BCDBoot when a readable existing store/tree cannot be preserved or its absence cannot be documented.
-
Prove that this WinRE session itself was started in UEFI mode before asking BCDBoot to write a UEFI NVRAM entry:
wpeutil UpdateBootInfo reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareTypeRequire
PEFirmwareType REG_DWORD 0x2.0x1, a missing value, or an unavailable firmware enumeration is a stop condition: restart the recovery media through its explicitly labeled UEFI boot-menu entry, redetectW:andS:, and recheck. GPT describes the target disk; it does not prove that the current recovery session can access UEFI variables. -
Record the firmware listing before the write:
bcdedit /enum firmware /v > "%EVID%\firmware-WinRE-before.txt" -
Because the intended disk is now the only unambiguous Windows boot disk and the current WinRE session is proven UEFI-booted, let BCDBoot select the system partition and create/update the firmware entry. Add a newly created Windows Boot Manager entry last so the existing working order is not promoted before testing:
bcdboot W:\Windows /addlast /vDo not combine
/f UEFIwith automatic system-partition selection;/frequires an explicit/starget. This branch deliberately omits/sso BCDBoot can update UEFI NVRAM, and/addlastprevents the new entry from being placed first. -
Continue only if BCDBoot reports Boot files successfully created.
-
Enumerate firmware entries again and save the result:
bcdedit /enum firmware /v > "%EVID%\firmware-WinRE-after.txt" -
Restart, select the new internal Windows Boot Manager once, then make it first through firmware setup.
Do not format the EFI System Partition. If BCDBoot cannot identify the correct system partition, stop rather than forcing a target.
Branch C — BIOS/MBR firmware has fixed physical-port precedence
- Use this branch only when DiskPart proves the intended Windows disk is basic MBR, the one-time selection boots it, firmware has no effective per-drive priority, and the motherboard documentation confirms port precedence.
- Shut down, switch off the power supply when present, unplug AC power, and discharge residual power.
- Photograph both SATA data connections and labels.
- Move the intended Windows drive to the documented first bootable SATA port. Move the other drive to the next port.
- Do not change SATA controller mode.
- Reassemble, start the computer, and verify that both drives are detected.
- If either drive disappears or Windows fails, power down and restore the original cable positions.
Branch D — The correct order exposes a separate BCD problem
If selecting or prioritizing the correct drive now shows 0xc000000f, 0xc0000098, 0xc000000e, or 0xc0000225, stop order changes. The order problem is resolved, but the selected BCD/device path has its own fault. Route by the complete code, file, and message to the appropriate BCD repair page.
Expected results and branches
- Correct Windows starts without USB or manual selection: order repair is successful.
- Correct Windows starts only from the one-time menu after saving: firmware did not retain the priority; verify save method, firmware update applicability, and CMOS-setting retention.
- BCDBoot succeeds and a new Windows Boot Manager entry appears last: test it once before making it first.
- BCDBoot succeeds but no entry appears: the explicit
/spath was not used here, so an absent entry indicates a firmware/NVRAM or system-partition problem; stop and preserve output. - Correct drive selection produces a Windows Recovery code: order was only the first layer. Route to the displayed BCD/file/device problem.
- Port swap fixes startup: retain the documented port map; the result supports port precedence, not disk-media failure.
- The wrong Windows still loads: re-identify every installed Windows instance before further BCD changes.
Do not do this
- Do not delete firmware entries before the working entry is proven and recorded.
- Do not change UEFI/legacy mode, Secure Boot, VMD, AHCI, or RAID to make an entry appear.
- Do not format, delete, create, convert, resize, or move a partition.
- Do not mark a GPT partition Active.
- Do not run BCDBoot against a guessed
C:\Windowsfrom WinRE. - Do not swap drive ports as the first fix when firmware provides a working order control.
- Do not disconnect or open a laptop without its service procedure.
- Do not treat
0xc000000f,0xc0000098,0xc000000e, or0xc0000225as proof of wrong boot order.
Rollback
-
For Branch A, restore the photographed firmware order and save changes.
-
For Branch C, power down and restore each SATA cable to its recorded original port.
-
For Branch B, keep the new firmware entry if it is the only working one. If it creates an unwanted duplicate and the old entry remains proven working:
- compare the attempt directory's
firmware-WinRE-before.txtandfirmware-WinRE-after.txt; - identify only the newly created GUID;
- boot through the old entry once; and
- delete only the new GUID from an elevated prompt with
bcdedit /delete {GUID}.
- compare the attempt directory's
-
If BCDBoot changes the BCD and Windows no longer starts, return to WinRE and redetect and reassign the same verified
W:andS:volumes; drive letters and environment variables do not persist across WinRE restarts. List the attempt directories, resetEVIDto the exact prior one, and verify its marker and backup before copying anything. For example, when the recorded attempt was 01:dir W:\BootOrderEvidence set "EVID=W:\BootOrderEvidence\FIX060-Attempt-01" type "%EVID%\attempt-marker.txt" dir "%EVID%\efi-backup-result.txt" dir "%EVID%\BCD-before"If the recorded attempt was not 01, substitute that exact number. Stop if the directory or expected same-attempt files do not match. Then copy the post-change store aside and restore the readable pre-change store:
copy S:\EFI\Microsoft\Boot\BCD "%EVID%\BCD-after-failed" attrib -s -h -r S:\EFI\Microsoft\Boot\BCD copy /y "%EVID%\BCD-before" S:\EFI\Microsoft\Boot\BCDRestore only the store copied from that exact partition. This restores the BCD store only; it does not automatically restore every EFI file BCDBoot refreshed or UEFI NVRAM order. Use the captured full EFI tree only to compare and restore exact changed files on this same ESP, and use the before/after firmware listing to restore only a demonstrated NVRAM-order change. If no valid backup was created, stop rather than substituting another disk's BCD.
Verification
-
Remove all bootable external media.
-
Perform two restarts and two complete shutdown/start cycles.
-
Confirm the intended Windows installation loads each time without opening a boot menu.
-
Confirm every internal data drive remains visible and unchanged.
-
Run:
bcdedit /enum {fwbootmgr} /v bcdedit /enum firmware /v bcdedit /enum {current} /v -
Save the after-state and compare it to the before-state.
-
Confirm firmware time and other saved settings persist through power-off.
-
Reconnect external devices one at a time and verify none takes priority over the internal Windows entry.
Confidence and stop conditions
Confidence is approximately 80% when the intended internal entry boots twice from the one-time menu, normal startup selects a different entry, changing only persistent order produces repeated direct boots, and the result survives USB removal and cold starts. Confidence is lower when BCD repair or a cable swap is required because multiple mechanisms changed.
The three underlying records confirm three variations: wrong drive/BCD selection in a dual-drive laptop, an internal UEFI entry placed behind USB, and BIOS port precedence corrected by moving SATA cables. They support separate branches, not a rule that every manual-selection problem should receive all three actions.
Stop if the intended entry fails when selected manually, the drive disappears, the system partition is ambiguous, BCDBoot cannot copy files, firmware does not retain other settings, a non-Windows boot manager is intentional, or a controller-mode change would be required. Those facts move the case outside a simple boot-order repair.