While working on a Windows 10 upgrade project for a company, it was observed that numerous machines were failing with CRITICAL_PROCESS_DIED. A critical service would crash in the SECOND_BOOT phase between 80-90% of total progress. This resulted in bugcheck 0xEF. The root cause in my organization was the value of MachineLaunchRestriction being abnormally large. It was larger than 65535/FFFF.
To determine your value, you can use PowerShell:
Above is the output of the PowerShell. The value of MachineLaunchRestriction is outlined in red. If your output is larger than 65535, you can remediate by running the following PowerShell:
# Set Variables
$dir = Test-Path – Path C:\regbu\ole
# Make Directory if it doesn’t exist
if(!$dir){
mkdir C:\regbu\old
}
# Backup Registry in case it hits the fan
reg export “HKEY_LOCAL_MACHINE\Software\Microsoft\Ole” C:\regbu\ole\hklmsoftMSole.reg /y
# Delete the key /f forces this
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\Ole /v MachineLaunchRestriction /f