Fixing Windows Update the hard way
TL;DR
Windows 10 refused to install the 22H2 update and none of the usual fixes helped. Eventually, I found
out, that a file issue on the EFI-partition prevented the update from successfully finishing.
After a simple fix, the update finally went through successfully.
Windows update refuses to install
Being the family IT guy unfortunately qualifies me for the thankless job of fixing stubborn Windows
problems every now and then. This time I was confronted with my moms Windows 10 laptop (Lenovo T470s) not
installing the KB5066791 “22H2” update. Every attempt ended abruptly at the very end
(100% of the installation reported to be finished) with something like we couldn't complete the update, undoing the changes. (by the way, who exactly is ‘we’? I would have had a couple of questions).
The usual suspects
Searching the net for the accompanying error code 0x800f0922 and update reveals lots of results,
with instructions on how top allegedly fix the problem. It boiled down to:
- enlarge the size of the EFI-partition: since my EFI-partition was only 100MB, I did that with a tool called “EaseUS” by first shrinking the system partition a bit, then moving the shrinked system partition so that there is some free space available right after the EFI-partition. I was confident this solves the problem, because I run into the problem before on a different machine. But this time, no luck.
- I also enlarged the recovery partition a bit, but this didn’t help either.
- running
chkdskon all file systems did not reveal any problems - I checked the logs of the windows updater using the
Get-WindowsUpdateLogcommand in Powershell, but i could not find any problems there. - running the “Windows Update Troubleshooter” did not find any problems.
- re-installation of .NET did again not help.
- also no luck running
DISM /Online /Cleanup-Imaghe /Restore-HealthandSFC /scannow - the same for
SC config trustedinstaller start=auto - I downloaded
KB5066791and installed it manually, without success. I also restarted the machine into safe-mode by selectingSHIFT+Restart after the installer was done. No luck again. - I uninstalled some drivers and disabled autostart services, again, you guessed it, without success.
Mentally, I was almost ready for a fresh reinstall of Windows, but first I tried using the built-in repair and self-healing functions of Windows:
- booting an Windows 10 installer from USB and running the repair options.
- running the Windows 10 installer directly from Windows.
Both did run for a while and then ended with Windows 10 could not be installed or
something like that.
Digging deeper
Hesitating to wipe the disk and do a complete reinstall, I dug deeper. Inspecting
the file C:\windows.~BT\Sources\Panther\setuperr.log I found these errors:
2025-11-25 22:02:34, Error SP BFSVC: Error creating \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\cs-CZ\ path! Last Error = 0xb7[gle=0x000000b7]
2025-11-25 22:02:34, Error SP BFSVC: Error copying boot files from C:\$WINDOWS.~BT\Sources\Boot\EFI to \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot! Last Error = 0xb7[gle=0x000000b7]
2025-11-25 22:02:34, Error SP BFSVC: ServicingBootFiles failed. Error = 0xb7[gle=0x000000b7]
2025-11-25 22:02:34, Error SP CUpdateBootCode::DoExecute: An error occurred while servicing the boot files from [C:\$WINDOWS.~BT\Sources\Boot]. Error: 0x800700B7[gle=0x000000b7]
2025-11-25 22:02:34, Error SP Operation failed: Update Boot Code. Error: 0x800700B7[gle=0x000000b7]
There seems to be a problem updating the EFI-partition. At least this explains why this
happens at the very end of the update. Let’s repair the partition with bcdboot, but
first we need to mount it to a drive letter:
> DISPART
SELECT DISK 0
SELECT PARTITION 1
ASSIGN LETTER=S
Now the EFI-partition can be accessed as drive S and we can run bcdboot:
C:\Windows\System32>bcdboot C:\Windows /s S: /f UEFI
Fehler beim Kopieren der Startdateien.
That did not work again, and I suppose this is the very same problem that the updater encounters at the very end.
Looking at the log again, this entry deserves further attention:
BFSVC: Error creating \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\cs-CZ\ path! Last Error = 0xb7[gle=0x000000b7]
The message suggests, that there is a problem with the Path EFI\Microsoft\Boot\cs-CZ on the
EFI-partition. But why? Let’s have a look:
C:\Windows\System32>dir S:
Volume in Laufwerk S: hat keine Bezeichnung.
Volumeseriennummer: 323D-4BB8
Verzeichnis von S:\EFI\Microsoft\Boot
03.02.2023 14:20 <DIR> .
03.02.2023 14:20 <DIR> ..
27.11.2025 13:18 53.248 BCD
03.02.2023 14:22 <DIR> bg-BG
07.12.2019 11:08 9.796 winsipolicy.p7b
03.02.2023 14:22 2.048 cs-CZ
03.02.2023 14:22 <DIR> da-DK
03.02.2023 14:22 <DIR> de-DE
03.02.2023 14:22 <DIR> el-GR
03.02.2023 14:22 <DIR> en-GB
03.02.2023 14:22 <DIR> en-US
03.02.2023 14:22 <DIR> es-ES
...
That is interesting: while all those country-code like objects (e.g. es-ES) are
directories, the cs-CZ entry is a file. Let’s delete the file cs-CZ and run
bcdboot again:
S:\EFI\Microsoft\Boot>del cs-CZ
S:\EFI\Microsoft\Boot>c:
C:\Windows\System32>bcdboot C:\Windows /s S: /f UEFI /v
BFSVC: ServiceBootFiles MuiOnly:n Res:y Fonts:y BootMgrOvw:n BootStatOvw:n DbgTrn:y SuspendBDE:n Offline:n
BFSVC: Not using Ex bins.
BFSVC: Using source OS version a00004a610001
BFSVC: Copying boot files CopyBootManager(No) C:\Windows\boot\EFI -> \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot
BFSVC: Unable to open file \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\cs-CZ\bootmgfw.efi.mui for read because the file or path does not exist
BFSVC: Unable to open file \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\cs-CZ\bootmgr.efi.mui for read because the file or path does not exist
BFSVC: Unable to open file \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\cs-CZ\memtest.efi.mui for read because the file or path does not exist
BFSVC: Creating Recovery directory.
BFSVC Warning: Failed to create Recovery directory. Last error = 0xb7
BFSVC: Logging boot file servicing to bootstat log \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\BOOTSTAT.DAT.
BFSVC: Copying font files from C:\Windows\boot\Fonts to \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\Fonts...
BFSVC: Copying resource files from C:\Windows\boot\Resources to \\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\Resources...
BFSVC: Servicing debugger files
BFSVC: List of debugger files is empty
BFSVC: System partition is not in a space
BFSVC: BfsInitializeBcdStore flags(0x0000021c) RetainElementData:n DelExistinObject:n
BFSVC: VolumePathName for C:\Windows is C:\
BFSVC: Opening template from \Device\HarddiskVolume2\Windows\System32\config\BCD-Template.
BFSVC: Opening store from \Device\HarddiskVolume1\EFI\Microsoft\Boot\BCD
BFSVC: Creating General objects.
BFSVC: Creating Resume object.
BFSVC: Creating MemTest object.
BFSVC: Creating OsLoader object.
BFSVC: OsLoader identifier: {ffea8ec9-cb8f-11f0-becf-8c1645aaaeb6}
BFSVC: Removing duplicate entries.
BFSVC: Removing duplicate object {7caeb2b8-a3c5-11ed-947e-eb9ce7742892}
BFSVC: Create BOOTMGR object RetainBootDefault:n
BFSVC: Setting {default} to {ffea8ec9-cb8f-11f0-becf-8c1645aaaeb6}
BFSVC: Cleaning up debugger settings.
BFSVC: Opening recovery store from \Device\HarddiskVolume1\EFI\Microsoft\Recovery\BCD
BFSVC: Creating new recovery store \Device\HarddiskVolume1\EFI\Microsoft\Recovery\BCD
BFSVC: BCD Error: Failed to create hive. Store: \Device\HarddiskVolume1\EFI\Microsoft\Recovery\BCD Status: c000003a
BFSVC: BCD Error: Failed to create store. Status: c000003a
BFSVC Error: Failed to create a new recovery store. Status = [c000003a]
BFSVC Warning: Failed to create recovery store. Status = [c000003a]
Die Startdateien wurden erfolgreich erstellt.
While still some errors are reported, bcdboot did run successfully. After all that, I had to stop
and remind myself what I was even doing. Ah yes — just trying to update Windows. So I kicked off the
update again, curious to see if it would finally proceed without an error. And yes, the update was finally
installed successfully and the machine came up without problems.
What a waste of time, but another job well done, and we are now ready to run FlyOOBE.