Run SetupDiag and inspect the rollback logs before retrying, because 0xC1900101 is a generic rollback code—usually involving an incompatible driver—and does not identify the specific component by itself.^1^
1. Collect the actual failure details
A direct Windows Server 2016 → Windows Server 2025 in-place upgrade is supported with installation media on a nonclustered server. Windows Update does not provide this direct path from Server 2016.^2^
- Sign in after the rollback and open:
-
C:\Windows\Logs\SetupDiag\SetupDiagResults.xml
- Registry Editor →
HKEY_LOCAL_MACHINE\SYSTEM\Setup\SetupDiag\Results
Windows Setup normally runs SetupDiag automatically after a failure.^3^
- If no useful result exists, download the latest
SetupDiag.exe, save it as C:\SetupDiag\SetupDiag.exe, and run this from an elevated Command Prompt:
mkdir C:\SetupDiag 2>nul
cd /d C:\SetupDiag
SetupDiag.exe /Output:C:\SetupDiag\Results.log /Verbose
notepad C:\SetupDiag\Results.log
SetupDiag requires .NET Framework 4.7.2 or later. If needed, check the installed version:
reg.exe query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP\v4" /s
- Record the following from the result:
- Complete result and extend code, such as
0xC1900101-0x20017
-
Matching Profile Found or matched rule
- Named driver, service, device, or application
- Failure phase and operation
If SetupDiag lists several failures, the last failure is typically the fatal one.^3^
2. Inspect the rollback logs
Use an elevated Command Prompt or enable File Explorer → View → Show → Hidden items and unhide protected operating-system files. Review:
-
C:\$WINDOWS.~BT\Sources\Rollback\setupact.log
-
C:\$WINDOWS.~BT\Sources\Rollback\setuperr.log
-
C:\$WINDOWS.~BT\Sources\Rollback\setupapi\setupapi.dev.log
-
C:\$WINDOWS.~BT\Sources\Rollback\setupmem.dmp
-
C:\$WINDOWS.~BT\Sources\Rollback\*.evtx
-
C:\$WINDOWS.~BT\Sources\Panther\setupact.log
-
C:\$WINDOWS.~BT\Sources\Panther\setuperr.log
For 0xC1900101, the rollback setupact.log and event logs are primary evidence; setupapi.dev.log is particularly useful for device-install failures such as extend code 0x30018.^4^
Search upward from the last occurrence of the error code and correlate entries by timestamp. Also search for:
Shell application requested abort
Abandoning apply due to error for object
Depending on the result:
- Update or uninstall the named storage, RAID/HBA, NIC, chipset, or other device driver.
- If SetupDiag names disk encryption, antivirus, EDR, backup, or another filter driver, use that vendor’s supported removal or upgrade procedure.
- Update BIOS/firmware only through the hardware or VM-platform vendor.
- If the extend code is
0x20017, concentrate on boot/storage drivers, disk-encryption software, and possible hardware failure.
- If it is
0x30018, investigate the device named in setupapi.dev.log and disconnect nonessential peripherals.^1^
Before retrying, create and restore-test a full backup. Then mount matching Server 2025 installation media inside Server 2016, run setup.exe, and select Keep files, settings, and apps.^5^
Conditional fallbacks
- If SetupDiag identifies no component: perform a clean boot, disconnect nonessential peripherals, remove unused devices/drivers, and retry with a minimal driver and startup-service set.^1^
- If NIC Teaming is enabled: disable it before the upgrade and re-enable it afterward.^2^
- If this is a domain controller: do not continue with an in-place upgrade; install Server 2025 cleanly, promote the new DC, and demote the old DC.^5^
- If this is an Azure VM: first run the Azure VM OS Upgrade Assessment Tool and follow the Azure-specific procedure.^6^ If that procedure requires temporarily disabling security software or firewalls, this increases exposure—use a tightly controlled maintenance window with network isolation or equivalent protections, then immediately re-enable and verify every security control after the attempt.
Provide the complete result-plus-extend code and the SetupDiag matched rule to narrow remediation to the failing phase.
References
- Windows 10 upgrade resolution procedures - Windows Client
- Plan Your Windows Server Upgrade Path | Microsoft Learn
- SetupDiag
- Windows upgrade log files
- Upgrade Windows Server in Place | Microsoft Learn
- In-place upgrade for VMs running Windows Server in Azure