Windows Server 2016-Updates

Registry Fix for Error 0x800f0922 and Update Rollback Issues

Summary: If your Windows Server 2016 cumulative updates are failing to install—reaching 100% then rolling back with error 0x800f0922—this article explains the multiple causes and fixes. The issues are particularly common on servers that were upgraded from Windows Server 2012 R2, and on Remote Desktop Services (RDS) Session Host servers.


The Problem

Since late 2025, many Windows Server 2016 administrators have been experiencing a frustrating issue: cumulative security updates appear to install successfully, reaching 100%, but then roll back during the restart with the message:

“We couldn’t complete the updates. Undoing changes.”

The error code associated with this failure is typically 0x800f0922 (CBS_E_INSTALLERS_FAILED). This has affected multiple cumulative updates including KB5066836, KB5066136, KB5070882, KB5071543, KB5073722, and others.


Who’s Affected?

This issue primarily affects:

  1. Windows Server 2016 systems upgraded from Windows Server 2012 R2 — rather than clean installations
  2. Remote Desktop Services (RDS) Session Host servers — particularly those with active user profiles
  3. Servers with MSMQ (Message Queuing) installed — especially with the December 2025 update (KB5071543)

If you have multiple Server 2016 machines and only some are experiencing this issue, check whether the affected servers fall into one of these categories.


Issue 1: Event Log Provider Registry Conflict

The Cause

The update fails because of a conflict between two Windows Event Log providers trying to claim ownership of the same channel (Microsoft-Windows-Store/Operational).

When cumulative updates install, they include an event log manifest that tries to register a provider called Microsoft-Windows-Store for this channel. However, an orphaned registry key from a previous Windows Store component has already claimed ownership under a different provider name (Microsoft-Windows-Store-Client-UI).

The Windows Event Log system doesn’t allow two providers to own the same channel. When the update installer attempts to register its manifest, it fails with error 15010 (ERROR_EVT_INVALID_PUBLISHER_NAME). This error triggers a rollback of the entire cumulative update.

The orphaned registry key is typically left behind from a previous Windows Store component that was removed or updated incorrectly—common on Server 2016 where the Store isn’t really used but remnants still exist.

If you check the CBS.log file (located in C:\Windows\Logs\CBS), you’ll see an error message like:

Channel Microsoft-Windows-Store/Operational is declared by an existing provider Microsoft-Windows-Store-Client-UI{{53e3d721-2aa0-4743-b2db-299d872b8e3d}}

Or:

Error HRESULT_FROM_WIN32(15010) from InstrumentationManifestAssert

The CBS.log may reference one of these GUIDs:

  • {53e3d721-2aa0-4743-b2db-299d872b8e3d} — Microsoft-Windows-Store-Client-UI
  • {9c2a37f3-e5fd-5cae-bcd1-43dafeee1ff0} — Microsoft-Windows-Store

Why Standard Repair Tools Don’t Help

You may also see errors in CBS.log referencing a corrupted manifest file:

Failed to load xml document C:\WINDOWS\System32\LicenseManager-Events.man. Incorrect function.

This can lead you to believe the manifest file itself is corrupted and needs repair. However, this is a symptom, not the cause. The manifest file fails to load because the registry conflict prevents it from being processed correctly.

Running DISM /Online /Cleanup-Image /RestoreHealth or sfc /scannow will not fix this issue because:

  • The component store isn’t actually corrupted
  • The manifest file itself is valid
  • The problem is in the Event Log registry, which these tools don’t repair

Similarly, scripts that attempt to re-register event manifests by searching for .manifest files won’t help—those are SxS assembly manifests, not event log manifests (.man files). The wevtutil command expects .man files.

The Fix

Step 1: Check if the Registry Key Exists

First, verify whether the problematic registry key is present:

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}"

If you see output showing Microsoft-Windows-Store-Client-UI, this fix applies to your situation. If the key doesn’t exist, skip to the other issues below.

Step 2: Back Up and Delete the Registry Key

Using Command Prompt (Run as Administrator):

reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}" C:\Temp\StoreClientUI_backup.reg /y
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}" /f

Step 3: If It Still Fails

You may also need to delete a related Channels registry key:

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Store/Operational" /f

Step 4: Reboot and Retry the Update

Automated Fix for Multiple Servers (RMM Deployment)

If you need to deploy this fix across multiple servers via RMM, use this batch script:

@echo off
if not exist "C:\Temp" mkdir "C:\Temp"
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}" "C:\Temp\StoreClientUI_backup.reg" /y
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}" /f

The /y on the export overwrites if the backup already exists, making it safe to run multiple times.


Issue 2: RDS User Profiles Preventing Update Completion

The Cause

On Remote Desktop Services Session Host servers, the update can fail during the commit phase because user profile registry hives (NTUSER.DAT files) cannot be unloaded. This happens when:

  • Users are still logged in during the update
  • Orphaned user sessions exist
  • Profile registry hives remain loaded after users disconnect

In the CBS.log, you’ll see entries like:

Failed unloading hive file: \??\C:\Users\username\NTUSER.DAT

Multiple user profiles failing to unload will cause the update to roll back.

The Fix

Step 1: Log Off All Users

Check for active sessions:

query user

Log off each session:

logoff <session_id>

Step 2: Prevent New Logins

chglogon /disable

Step 3: Force Unload Orphaned Profile Hives

If any profiles remain loaded, manually unload them (replace the SID with the actual values from your CBS.log):

reg unload "HKU\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx"

Step 4: Reboot the Server

Reboot to ensure all profiles are completely unloaded.

Step 5: Install the Update Immediately

Install the update before any users log in:

wuauclt /detectnow /updatenow

Or install manually:

wusa.exe C:\path\to\update.msu /quiet /norestart

Step 6: Re-enable Logins After Update

chglogon /enable

Issue 3: MSMQ (Message Queuing) Conflict

The Cause

The December 2025 update (KB5071543) introduced changes to the MSMQ security model and NTFS permissions on C:\Windows\System32\MSMQ\storage. This causes MSMQ-dependent applications and IIS sites to fail with errors like:

  • “Insufficient resources to perform operation”
  • “The message file cannot be created”

If MSMQ is installed, the update may also fail to install or roll back.

The Fix

Option A: Install the Out-of-Band Fix

Microsoft released KB5074974 (December 18, 2025) to fix the MSMQ issue. Download it from the Microsoft Update Catalog and install after KB5071543:

wusa.exe KB5071543.msu /quiet /norestart
wusa.exe KB5074974.msu /quiet /norestart
shutdown /r /t 60

Option B: Temporarily Disable MSMQ

If the out-of-band fix also fails:

  1. Disable MSMQ before updating:
    dism /online /disable-feature /featurename:MSMQ-Server /norestart
    
  2. Install the update and reboot
  3. Re-enable MSMQ:
    dism /online /enable-feature /featurename:MSMQ-Server /all /norestart
    
  4. Reboot again

Issue 4: Network Drivers Installation Failure

The Cause

Some updates fail during the “Network Drivers” phase of installation, typically due to services consuming resources or conflicting with the update process. In CBS.log, you’ll see:

Failed execution of queue item Installer: Network Drivers ({a111f280-5923-47c0-9a68-d0bafb577901}) with HRESULT 800106d9

The Fix

Perform a Clean Boot Before Installing Updates:

  1. Run msconfig
  2. Go to Services tab
  3. Check Hide all Microsoft services
  4. Click Disable all
  5. Go to Startup tab > Open Task Manager > Disable all startup items
  6. Reboot and install updates

Or Disable Specific Services:

sc config W3SVC start= disabled
sc config WAS start= disabled
net stop W3SVC
net stop WAS

Install the update, reboot, then re-enable:

sc config W3SVC start= auto
sc config WAS start= auto

Issue 5: .NET Framework Version

The Cause

Current security patches are built for .NET Framework 4.8. Servers running older versions (like 4.6.2, the Server 2016 default) may experience update failures or rollbacks.

The Fix

Check your .NET Framework version:

reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release

If not running 4.8, download and install it from: https://dotnet.microsoft.com/download/dotnet-framework/net48


Diagnostic Steps

Check the CBS.log

The CBS.log file contains detailed information about why updates failed:

notepad C:\Windows\Logs\CBS\CBS.log

Search for:

  • error
  • fail
  • rollback
  • 0x800f0922
  • HRESULT_FROM_WIN32(15010)
  • Microsoft-Windows-Store-Client-UI
  • Network Drivers
  • Failed unloading hive file

Verify Current Build

winver

Or:

systeminfo | findstr "OS Version"

Check Installed Updates

wmic qfe list brief /format:table

Monitoring Script for RMM

Use this script to identify which servers need the registry fix and which are behind on updates:

@echo off
setlocal

for /f "tokens=2 delims==" %%a in ('wmic os get Version /value ^| find "="') do set VERSION=%%a

set KB5073722=Not Installed
wmic qfe get HotFixID | find "KB5073722" >nul && set KB5073722=Installed

set REGKEY=Not Present
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{53e3d721-2aa0-4743-b2db-299d872b8e3d}" >nul 2>&1 && set REGKEY=Present

echo %COMPUTERNAME%,%VERSION%,%KB5073722%,%REGKEY%

This outputs CSV format for easy reporting: SERVERNAME,10.0.14393,Not Installed,Present

Servers showing Not Installed,Present need the registry fix before the update will succeed.

General Patch Compliance Script

To monitor whether any Windows device is falling behind on updates:

@echo off
setlocal EnableDelayedExpansion

:: Get OS info
for /f "tokens=2 delims==" %%a in ('wmic os get Caption /value ^| find "="') do set OS=%%a
for /f "tokens=2 delims==" %%a in ('wmic os get Version /value ^| find "="') do set VERSION=%%a

:: Get most recent patch date
set LASTPATCH=Unknown
for /f "skip=1" %%a in ('wmic qfe get InstalledOn ^| sort') do (
    if not "%%a"=="" set LASTPATCH=%%a
)

:: Calculate days since last patch
for /f %%a in ('powershell -command "(New-TimeSpan -Start (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).InstalledOn -End (Get-Date)).Days"') do set DAYS=%%a

echo Computer: %COMPUTERNAME%
echo OS: %OS%
echo Version: %VERSION%
echo Last Patch: %LASTPATCH%
echo Days Since Patch: %DAYS%

:: Alert thresholds (adjust as needed)
if %DAYS% GTR 60 (
    echo Status: CRITICAL - Over 60 days behind
    exit /b 2
) else if %DAYS% GTR 35 (
    echo Status: WARNING - Over 35 days behind
    exit /b 1
) else (
    echo Status: OK
    exit /b 0
)

Exit codes for RMM alerting:

  • 0 = OK (patched within 35 days)
  • 1 = Warning (35-60 days)
  • 2 = Critical (60+ days)

Applying Fixes to Multiple Servers

If you have multiple Windows Server 2016 machines experiencing this issue:

  1. Check the CBS.log on each affected server to identify which specific issue applies
  2. Compare working servers vs. failing servers to identify common factors:
    • Were they upgraded from 2012 R2?
    • Do they run RDS Session Host?
    • Is MSMQ installed?
  3. Apply the appropriate fix based on the CBS.log errors
  4. Use the RMM scripts above to deploy fixes at scale

When All Else Fails

If none of the above fixes work:

  1. Open a Microsoft Support case — these are known issues affecting many administrators
  2. Wait for the next cumulative update — Microsoft often fixes installer issues in subsequent releases
  3. Disable Windows Update prompts to stop nagging users while you investigate:
    sc config wuauserv start= disabled
    net stop wuauserv
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f
    

When the Root Cause Cannot Be Identified

In some cases, the CBS.log will show errors (such as HRESULT_FROM_WIN32(15010) or Event provider conflicts) but the corresponding registry keys do not exist on the server. This can happen when:

  • The conflict is occurring at a different level than the registry
  • Multiple issues are compounding each other (e.g., Event provider errors combined with RDS profile issues)
  • The error is a symptom of a deeper component store problem that standard repair tools (DISM, SFC) don’t detect

If you’ve tried all the fixes and the update still fails:

  • Compare working vs. non-working servers in detail (installed roles, software, original install date, base image)
  • Consider that some servers may require a clean installation rather than continued troubleshooting (the last resort for us)
  • Document your findings for Microsoft Support — they may have access to diagnostic tools not publicly available
  • The next cumulative update may resolve the issue as Microsoft continues to address these problems

Reality check: Sometimes Windows Update issues on older servers cannot be fully diagnosed or resolved. If the servers are functioning correctly otherwise, disabling update prompts and waiting for either a future fix or planned server replacement may be the pragmatic approach.


Looking Ahead

These issues highlight challenges with:

  • In-place upgrades leaving legacy registry entries
  • RDS environments having unique update requirements
  • Complex interactions between Windows features during updates

Server 2016 support ends in January 2027. Consider planning migrations to newer Windows Server versions where feasible.

Need help with Windows Server updates? Get in touch—we’re happy to help.

Give our friendly experts a call on 020 3327 0310.


Last updated: March 2026