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
-
- If no useful result exists, download the latest
SetupDiag.exe, save it asC:\SetupDiag\SetupDiag.exe, and run this from an elevated Command Prompt:
SetupDiag requires .NET Framework 4.7.2 or later. If needed, check the installed version:mkdir C:\SetupDiag 2>nul cd /d C:\SetupDiag SetupDiag.exe /Output:C:\SetupDiag\Results.log /Verbose notepad C:\SetupDiag\Results.logreg.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 Foundor matched rule - Named driver, service, device, or application
- Failure phase and operation
- Complete result and extend code, such as
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
3. Remediate only the identified component
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 insetupapi.dev.logand 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