I am having a repeat problem: my unstable PC BSODed while I wasn't doing anything, rebooted and then BSODed again on boot (0xc000021a), rebooted to the repair environment, which failed to fix it: my machine is unbootable. As before, booting to safe mode is impossible.
I am fairly sure that physical damage to my hardware has rendered something seriously screwy and I will replace the thing soon. Until that time I would like to get my PC back up and running so I have something to use, take backups and so on.
Now, the logfiles the diagnostics leave in Windows\System32\LogFiles\Srt\ are not very helpful. Yesterday it said that a critical boot file was corrupt but did not say which one(s). Today it says that "a patch is preventing the system from starting" but that the repair action, "System files integrity check and repair" failed with error code 0x57.
My understanding is that the correct course of action would now be to run SFC on the offending system. So I booted to the recovery environment, clicked through to the command prompt, and tried it. However, SFC fails; running
performs the verification stage and spits out:
Now in spite of the frequent recommendation to run this command, my limited understanding is that this is useless anyway, as it is checking the files of the recovery environment. However, running
Windows Resource Protection could not perform the requested operation.
(F:\ is my boot drive when in the recovery environment) gives the same error but doesn't leave a log file to work out what might have gone wrong. Replacing /scannow with /verifyonly doesn't help.
sfc /scannow /offbootdir=f: /offwindir=f:\windows
This error message seems completely general and of no use in working out what's preventing SFC from doing its job. The same occurs if I boot from installation media and run the commands from the command prompt in its own repair environment. I want to avoid having to nuke all the installed stuff (again) because even though I can keep my data, setting everything up for the billionth time gets tiring, and I will just have to do it again when I replace this machine.
So my question is: how can I replace these corrupted files? It seems like, certainly when running this stuff from installation media, it should not have any problems running SFC (I can imagine that the repair environment on the PC itself might also be boned). I have heard that DISM is a useful tool in this situation but I don't understand what it could be useful for since I'm not dealing with image files. Or am I taking it too literally, and does an installed version of windows count as an "unpacked" image? I don't know, it seemed to be exclusively for either altering a windows image file, or for altering an online (which I took to mean "booted") version of windows.
When I do try to use DISM I think it should be something like this:
But this gives the following error (after completing the progress bar):
dism /image:f:\ /cleanup-image /restorehealth
The logfile contains a bunch of errors. The first errors are about XML parsing, but (of course) it does not say what XML file. They look like "CBS Wrong XML DECL [HRESULT = 0x800f0900 - CBS_E_XML_PARSER_FAILURE" (and some other iterations - I can type them up if it would help) and continue for quite a while. After those errors come some from CSI about mismatched hashes, which I fully expect to see. They are for files under f:\Windows\WinSxS. The summary says that 31 instances of CBS manifest corruption were found, and nothing else.
An error occurred while processing the command.
Ensure that the command-line arguments are valid. For more information, review the log file.
Just before the corrupted packages are enumerated, the following errors appear:
The E_INVALIDARG error is then repeated in a few other places, but not with any new info that I can see.
CSI 00000014 (F) STATUS_INVALID_PARAMETER #174# from CCSDirect_IRtlComponentStore::EnumStoreCorruptions(...)[gle=0xd000000d]
CSI 00000015 (F) E_INVALIDARG #173# from Windows::COM::CStorePendingStoreRepairTxn_IStorePendingStoreRepairTransaction::Detect(Flags = 5, cancelEvt = 3bc (""), disp = 0)[gle=0x80070057]
CBS Rept: Failed to call CSI detect. [HRESULT = 0x80070057 - E_INVALIDARG]
Thanks for any help you can offer.