I've seen it happen since Windows 8 released, and it happens on 8.1 as well, and I've seen it happen on at least five different computers. Pretty much, I'll run Disk Cleanup, and it'll take an extremely long time to clean Windows Update files. Extremely long ranging from 20 minutes, to over an hour depending on the speed of the computer itself. The Windows Update files don't take up that much space either (less than 100MB according to Disk Cleanup), and the computers I've ran it on all are fast enough for such a small cleanup to take seconds (7200RPM drives on SATAII/III; quad-core CPUs). I almost see the task taking longer than Windows itself to install... Is there any reason why this happens? It only occurs seemingly on the first Disk Cleanup ran after Windows Update. Here's a layout of what I just did about 10 minutes ago: - Installed Windows 8.1 - Disable UAC (EnableLua=0) and rebooted - Did various System Properties changes (pagefile size, disabled system restore, set workgroup, disabled remote assistance, etc), disabled Hibernation, set auto-login, and rebooted - Connected to internet and activated (legitimate key) - Ran Windows Update - Rebooted - Ran Windows Update again - Ran WU a few more times to hide that Silverlight thing - Removed all Windows Features except .NET 4.5 and SMB 1.0; selected .NET 2.0/3.5 - Rebooted - Ran Disk Cleanup (have a timer running atm at 20 mins and counting; about 40MB on WU Cleanup; 700MB total cleanup most being on error reports or something) Edit: Took 27 minutes to do the Windows Update Cleanup.
Odds are you pressed "Clean up system files" Then it goes off and scans again the list, which takes a bit longer. Then when you press ok it takes ages, this is because it is cleaning the WinSxS folder with DISM and that takes AGES. Otherwise if you do not select the option "Clean up system files" then it whips through rapidly. Test it yourself and you will see that is what is taking the time (cleaning the WinSxS)
When you clean up system files, it scans for obsolete hotfix info that is still in the system. This is a safe method and is equivalent to the /startcomponentcleanup command without the /resetbase argument. It takes a long time because it has to scan all the manifests and such to find out which ones are superseded.