One of the most used tools when fixing corruption for Windows Vista, 7, 2008 and 2008 R2 was the System Update and Readiness Tool (KB947821), commonly called CheckSUR. The CheckSUR tool was an excellent way for most people to see what corruption had happened on their store, and potentially fix that corruption if the tool contained the payload to do so. I’ve written in the past how to use this mechanism to also fix corruption when the CheckSUR utility doesn’t include the payload for your files to “fool” CheckSUR into resolving the problem without needing to do all sorts of whacky permission changes (http://blogs.technet.com/b/joscon/archive/2010/05/26/using-checksur-and-update-packages-to-fix-corruption.aspx).
The way this works in Windows 8 and Windows Server 2012 is different, in a fantastic way. It’s called Inbox Corruption Repair and it brings the functionality of CheckSUR into Windows rather than requiring a separate download to get the utility like you do now. This is exposed in two ways, the first is really unseen by the end user and happens when we detect a corrupted state when attempting to install fixes via Windows Update. When this happens, we'll fix the corruption silently and then re-install the prior packages. The manual way to use this tool is via DISM. The way this is exposed is via the DISM /Cleanup-Image functionality. Here’s what the available switches do:
/CheckHealth: This checks to see if a component corruption marker is already present in the registry. We’ll inform the user if there is corruption but nothing is fixed or logged anywhere. This is merely a quick way to see if corruption currently exists. Think of it as a read-only CHKDSK. This operation should be almost instantaneous.
/ScanHealth: This checks for component store corruption and records that corruption to the C:\Windows\Logs\CBS\CBS.log but no corruption is fixed using this switch. This is useful for logging what, if any, corruption exists. This operation takes ~5-10mins.
/RestoreHealth: This checks for component store corruption, records the corruption to C:\Windows\Logs\CBS\CBS.log and FIXES the corruption using Windows Update. This operation takes ~10-15mins or more depending on the level of corruption.
As an example, if you wanted to run this utility against your local component store to check for corruption and you wanted it to repair everything as it found it you would run the following command: DISM /Online /Cleanup-Image /RestoreHealth
So a couple of things of note here:
These changes are really fantastic in my opinion because you no longer need to attempt to move files from other servers, manipulate permissions or “hack” other utilities to get corruption resolved. Windows Update is updated frequently so that it contains all of the payloads necessary to repair corruption. And above all else, Inbox Corruption Repair can repair both payload files and manifests (CheckSUR only did manifests) which is a HUGE win for you and I as customers.
As always, ask questions here.
--Joseph
Finally he went back with Windows 7... we'll never know, but its fixed for sure.
Well thats not ideal. Sorry about your experience. Hopefully, all is well with the new install.
Wow!!! This looked really helpful. And then I was let down =(
I was just sitting in safe-mode looking at the corrupt manifests and remembering how much manual work was required to fix this the previous time (calculate md5 hashes of the WinSxS dir on a healthy system, check hashes on a client system, for each corrupt file or manifest: take ownership and use a hex editor to replace the corrupted file content in place, preserving hardlinks).
I was just ranting that MS could have done something to mitigate the corruption (like torrent hash check and redownload or even PAR (the checksum algorithm which can very effectively fix a corruption - just a small 2Mb checksum file can fix up to 1Mb of corrupted data ANYWHERE in 100000 Gb of files) )
Desperately I've decided to check web one more time searching for ""windows 8" manifest corrupted" and found your post.
Well, it didn't work well.
The tool managed to successfully detect corruption and I was super happy.
But then I tried to repair the store and it couldn't.
Looks like it cannot repair the system from safe-mode. At least not by default:
2013-03-11 10:50:47, Info CBS Failed to get services collection [HRESULT = 0x8007043c - ERROR_NOT_SAFEBOOT_SERVICE]
2013-03-11 10:50:47, Info CBS Failed to get windows update server configuration. [HRESULT = 0x8007043c - ERROR_NOT_SAFEBOOT_SERVICE]
2013-03-11 10:50:47, Info CBS DWLD: Failed to begin WU search [HRESULT = 0x8007043c - ERROR_NOT_SAFEBOOT_SERVICE]
2013-03-11 10:50:47, Info CBS Failed to search on Windows update [HRESULT = 0x800f0906 - CBS_E_DOWNLOAD_FAILURE]
2013-03-11 10:50:47, Info CBS Repr: Failed to download payload files [HRESULT = 0x800f0906 - CBS_E_DOWNLOAD_FAILURE]
2013-03-11 10:50:47, Info CBS Failed to collect payload and there is nothing to repair. [HRESULT = 0x800f0906 - CBS_E_DOWNLOAD_FAILURE]
2013-03-11 10:50:47, Info CBS Failed to repair store. [HRESULT = 0x800f0906 - CBS_E_DOWNLOAD_FAILURE]
So, my client's system corruption cannot be fixed for now. That's sad.
(p) CBS MUM Missing Package_316_for_KB2756872~31bf3856ad364e35~amd64~~6.2.1.0
(p) CBS Catalog Corrupt Package_6_for_KB2777166~31bf3856ad364e35~amd64~~6.2.1.0
(p) CSI Manifest Corrupt amd64_microsoft-windows-store-runtime_31bf3856ad364e35_6.2.9200.16453_none_49cd9f1bc90a16fa
Repair failed: Missing replacement manifest.
(p) CSI Payload Corrupt amd64_netfx4-system.servicemodel_b03f5f7f11d50a3a_4.0.9200.16467_none_3839dc30d58515b2\System.ServiceModel.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt x86_microsoft-windows-networking_31bf3856ad364e35_6.2.9200.16420_none_1ee7feaa4bbb6ce8\Windows.Networking.dll
(p) CSI Payload Corrupt wow64_microsoft-windows-ieframe_31bf3856ad364e35_10.0.9200.20521_none_f7602c213a8f156e\ieframe.dll
(p) CSI Payload Corrupt wow64_adobe-flash-for-windows_31bf3856ad364e35_6.2.9200.20644_none_8f73160440b1b60f\Flash.ocx
(p) CSI Payload Corrupt amd64_microsoft-windows-r..s-regkeys-component_31bf3856ad364e35_6.2.9200.16384_none_8857d20891936288\rdpcorets.dll
(p) CSI Payload Corrupt amd64_netfx4-ngen_exe_b03f5f7f11d50a3a_4.0.9200.16384_none_b539fdc4ffb3c882\ngen.exe
(p) CSI Payload Corrupt amd64_netfx4-mscorrc_dll_b03f5f7f11d50a3a_4.0.9200.16384_none_e65ebcfc02b37ac1\mscorrc.dll
(p) CSI Payload Corrupt amd64_regasm_b03f5f7f11d50a3a_4.0.9200.16384_none_74564a1e2bebf5f2\RegAsm.exe
(p) CSI Payload Corrupt amd64_netfx4-perfcounter_dll_b03f5f7f11d50a3a_4.0.9200.16384_none_ae8b5f244abff0b7\PerfCounter.dll
I also wonder about the following lines. Does this mean that the important component - msvcp90.dll cannot be repaired by this system?
2013-03-11 10:40:27, Info CSI 0000000b Hashes for file member \SystemRoot\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4\msvcp90.dll do not match actual file [l:22{11}]"msvcp90.dll" :
Found: {l:20 b:BlWrqD6Ty9bITEZqt7WTDUqOwxI=} Expected: {l:20 b:wWR8irJaK8KK03naQCgIxxCgOKw=}
Found: {l:20 b:rJL39911tlIpMQy3z68NNbI1SKI=} Expected: {l:20 b:aF4dNBhwwplOmPhrRVfVKH/0zvM=}
2013-03-11 10:40:44, Info CSI 0000000c@2013/3/11:06:40:44.335 Corruption detection complete. numCorruptions = 11 (0x000000000000000b), Disp = 1.
2013-03-11 10:40:44, Info CBS Repr: CSI meta data corruption found, will commit repair transaction if repair is asked.
2013-03-11 10:40:44, Info CSI 0000000d@2013/3/11:06:40:44.475 CSI Transaction @0xbf49058a0 initialized for deployment engine {d16d444c-56d8-11d5-882d-0080c847b195} with flags 00000002 and client id [26]"TI5.30285346_2346790280:1/"
2013-03-11 10:40:44, Info CSI 0000000e@2013/3/11:06:40:44.475 CSI Transaction @0xbf49058a0 destroyed
2013-03-11 10:40:44, Info CBS Repr: Non CBS owner string: is found on component: amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4 [HRESULT = 0x800f090c - CBS_E_COMPONENT_NOT_INSTALLED_BY_CBS]
2013-03-11 10:40:44, Info CBS Not able to get CBS component onwers for component amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4 [HRESULT = 0x800f090c - CBS_E_COMPONENT_NOT_INSTALLED_BY_CBS]
2013-03-11 10:40:44, Info CBS Repr: Non CBS installed component found when attempting to find owner for corrupt file: msvcp90.dll, ignore it since it is not repairble
Ok. Managed to fix the display driver and logged in to Windows (not in safe mode).
Hoorah! The DISM managed to fix the store.
Couple of suggestions:
1) Tools like this must be able to run from safe-mode.
2) It's very uncool when a corrupted manifest file prevents Windows from booting, because it refuses to load "unsigned" drivers (the driver is signed and the catalog is ok, but the manifest linking the two is broken). The previous time, Windows didn't even allow me to use keyboard because the usbhub.sys driver became "unsigned" because of the manifest corruption. This is stupid...
@fduch;
Thanks for the comments. Were you running in safe mode or safe mode with networking? The commands should have been able to repair you with safe mode with networking. Standard safe mode doesnt initialize the NIC.
As for the corrupt manifest stopping Winndows from booting, that will happen if the driver is a boot critical driver. We dont load unsigned drivers for security reasons, thus its ends up being a dual pronged problem (fix the corruption, fix the boot file, fix the issue). Again, I think if you had a live NIC, this might have been resolved for you as well. Glad this worked out for you in the end.
PS C:\Users\Administrator> DISM /Online /Cleanup-Image /RestoreHealth
Deployment Image Servicing and Management tool
Version: 6.2.9200.16384
Image Version: 6.2.9200.16384
[==========================100.0%==========================]
Error: 582
An illegal character was encountered. For a multi-byte character set this includes a lead byte without a succeeding trai
l byte. For the Unicode character set this includes the characters 0xFFFF and 0xFFFE.
The DISM log file can be found at C:\Windows\Logs\DISM\dism.log
PS C:\Users\Administrator>
Any ideas?
Can you share out your DISM log somewhere for me?
send me a mail at jonas @ berg1 . se so can i send them to you =)
Probably no one noticed it, but it is KB947821 (there is an extra 1 mentioned which is incorrect)
Thanks Palash, fixed that
i have some BSOD issue with W8. than when system say to wait for collect error log and automatic rebooting it hang and freeze. i need to hard reset and restart. also when i do sfc /scannow the results are some component corrupted and no possible to repair. command DISM /Online /Cleanup-Image /RestoreHealth it can help to fix that?
thanks
It cant hurt ;)
If the SFC return is showing corruption, then yes, restorehealth should attempt to resolve that for you. Most BSODs aren't going to be component store corruption related though its not impossible to have it be a root cause. What was the last thing you did before you started getting the BSODs? Any recent driver updates?
apparently random. the last time i simply did right menu click and boom. so you tell me to try DISM /Online /Cleanup-Image /RestoreHealth command? sorry but what do you mean whit: It cant hurt ;) ?