# Thursday, 01 May 2008
« Nero | Main | LegacyDN »

SFC terminates at 39% with the above error.

%windir%\logs\CBS.log shows that a folder is not found:

2008-05-01 11:30:23, Error CSI 0000009b (F) STATUS_OBJECT_NAME_NOT_FOUND #1442392# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile(flags = (AllowSharingViolation), handle = {provider=NULL, handle=0}, da = (STANDARD_RIGHTS_READ|FILE_READ_ATTRIBUTES), oa = @0x6be774->OBJECT_ATTRIBUTES {s:24; rd:NULL; on:[120]"\??\C:\Windows\WinSxS\x86_microsoft-windows-i..l-keyboard-0000420_31bf3856ad364e35_6.0.6000.16386_none_e499ad916795d771"; a:(OBJ_CASE_INSENSITIVE)}, iosb = @0x6be794, as = (null), fa = 0, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE), cd = FILE_OPEN, co = 0x00004000, eab = NULL, eal = 0, disp = Invalid)

The folder \WinSxS\x86_microsoft-windows-i..l-keyboard ...etc is obviously corrupted (as it is now a 0kb file).

Used WinImage to extract this file from a Vista Business RTM vhd.  Comparing file size details of other folders and files suggested that this version would work.

To delete corrupt file/folder and replace with good version:

  • Take ownership of corrupt folder/file and WinSxS folder (ie parent) only
  • Give Full Control permissions to corrupt file and delete
  • Copy replacement file
  • Remove permissions from replaced folder and file(s)
  • Give NT SERVICE\TrustedInstaller ownership of replaced folder/children and parent directory

Running SFC now completes, albeit with a further uncorrectable error:

... Hashes for file member \SystemRoot\WinSxS\x86_microsoft-windows-mulanttsvoiceenudsk_31bf3856ad364e35_6.0.6000.16386_none_0d44c2d7a6e22754\M1033DSK.CSD do not match actual file [l:24{12}]"M1033DSK.CSD"

Which is corrected, as above.  Now SFC dectects and repairs a hash mismatch.  A further run completes with no errors.