Advanced guidelines for diagnosing and fixing servicing corruption

Applies To: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista

The purpose of this article is to provide advanced guidelines for diagnosing and fixing servicing corruptions that may occur when running the System Update Readiness Tool does not offer resolution. For more information on the System Update Readiness Tool and what symptoms can be caused by servicing corruptions, see article 947821in the Microsoft® Knowledge Base (https://go.microsoft.com/fwlink/?LinkId=165000)..

Advanced guidelines for diagnosing and fixing servicing corruption

This article applies to the following operating systems:

  • Windows Vista®

  • Windows® 7

  • Windows Server® 2008

  • Windows Server® 2008 R2

Diagnosing corruptions

If running the System Update Readiness Tool does not remedy the problem, you can proceed to diagnose the tool’s report and determine if it is possible to fix the corruptions manually.

The report can be found at %windir%\logs\cbs\checksur.log.

At the end of the log file, you will find a summary section that looks like:

Summary:
Seconds executed:
Found XX errors
Fixed XX errors
…

The report may fit one or more of the following patterns. Each pattern provides a description of the issue and solution to the problem.

Using the checkSUR report

  1. The System Update Readiness Tool has fixed all found errors, as in the example below:

    Summary:
    Seconds executed: 100
    Found 10 errors
    Fixed 10 errors
    

    You should no longer have any servicing corruption on your computer. If you are still getting errors after this point, use one of the following links to resolve your issue:

  2. If you get the Unavailable repair files message, this indicates that some of the inconsistent files found by the tool cannot be fixed as the correct versions of the replacement files are not carried by the tool. After this message appears, a list of the missing files follows.

    Summary:
    Seconds executed: 264
    Found 3 errors
    CBS MUM Missing Total Count: 3
    Unavailable repair files:
       servicing\packages\Package_for_KB958690_sc_0~31bf3856ad364e35~amd64~~6.0.1.6.mum
       servicing\packages\Package_for_KB958690_sc~31bf3856ad364e35~amd64~~6.0.1.6.mum
       servicing\packages\Package_for_KB958690~31bf3856ad364e35~amd64~~6.0.1.6.mum
       servicing\packages\Package_for_KB958690_sc_0~31bf3856ad364e35~amd64~~6.0.1.6.cat
       servicing\packages\Package_for_KB958690_sc~31bf3856ad364e35~amd64~~6.0.1.6.cat
       servicing\packages\Package_for_KB958690~31bf3856ad364e35~amd64~~6.0.1.6.cat
       winsxs\manifests\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.0.6002.18005_none_0b4ada54c46c45b0.manifest
       winsxs\manifests\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_6.0.6002.18005_none_676975d87cc9b6e6.manifest
    

    Steps to resolve this issue

    1. Get the files required from other sources. The options available can be found in the “Options for obtaining files” section below.

    2. Copy the files to %Windir%\Temp\CheckSUR directory of the corrupted computer following the subdirectory format as follows:

      1. All files of type *.mum and *.cat should be placed in the %windir%\Temp\CheckSUR\servicing packages directory

      2. All files of type *.manifest should be placed in the %windir%\Temp\CheckSUR\manifests\ directory

        For example:

        Copy Package_for_KB958690_sc_0~31bf3856ad364e35~amd64~~6.0.1.6.mum to %Windir%\Temp\CheckSUR \servicing\packages\

        Copy x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.0.6002.18005_none_0b4ada54c46c45b0.manifestto %Windir%\Temp\CheckSUR \winsxs\manifests\

Important

Whenever you copy a .mum file, you must also copy the corresponding .cat file of the same name.

    3.  Rerun the System Update Readiness tool.  
          
  1. If you get a Payload File Missing message, then the binary required is not available. This means that the issue is not fixed.

    Summary:
    Seconds executed: 100
    Found 5 errors
    Fix 2 errors
    CSI Payload File Missing Total count: 5
    Fix CSI Payload File Missing Total Count: 2
    
    (f)   CSI Payload File Missing 0x00000000   admparse.dll   x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8 servicing_31bf3856ad364e35_6.0.6000.16386_none_23ddbf36a8a961bc
    (f)   CSI Payload File Missing 0x00000000   bootmgr   x86_microsoft-windows-b..re-bootmanager-pcat_31bf3856ad364e35_6.0.6000.16386_none_c0f2f087b6457236
    (fix) CSI Payload File Missing 0x00000000   bootmgr   x86_microsoft-windows-b..re-bootmanager-pcat_31bf3856ad364e35_6.0.6000.16386_none_c0f2f087b6457236
    (f)   CSI Payload File Missing 0x00000000   winload.exe   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
    (f)   CSI Payload File Missing 0x00000000   setbcdlocale.dll   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
    (f)   CSI Payload File Missing 0x00000000   winresume.exe   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
    (fix) CSI Payload File Missing 0x00000000   winresume.exe   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
    

    Steps to resolve this issue

    1. Find out which payload files are missing by looking at checkSUR.log. Identify any line that have (f) that is not followed by (fix). From the previous example the three payload files that are not fixed are:

      (f)   CSI Payload File Missing 0x00000000   winload.exe   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
      (f)   CSI Payload File Missing 0x00000000   setbcdlocale.dll   x86_microsoft-windows-b..environment-windows_31bf3856ad364e35_6.0.6000.16386_none_6701d52e8fdf8d45
      (f)   CSI Payload File Missing 0x00000000   admparse.dll   x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8 servicing_31bf3856ad364e35_6.0.6000.16386_none_23ddbf36a8a961bc
      
    2. Get the files required from other sources. The options available can be found in the “Options for obtaining files” section below.

Note

Ensure the binary you get from matches the directory name mentioned on checkSUR.log. For the above example, the directory name is x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8

3.  Paste the files onto the proper subdirectory under **c:\\windows\\winsxs**.
    

Important

Please only paste the files that are needed. Replacing additional files may lead the system into an unserviceable state.

    Before placing the files in the appropriate locations, you may need to grant yourself permissions to edit the folder’s contents; below is a quick guide on how to achieve this.
    
    1.  At an elevated command prompt: **takeown /f Path\_And\_File\_Name**  
          

Tip

For example: takeown /f c:\windows\winsxs\ x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8

    2.  Next, to grant administrators full access to the file: **icacls Path\_And\_File\_Name /GRANT ADMINISTRATOR:F**  
          

Tip

For example: icacls c:\windows\winsxs\x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8 /grant administrators:F

    3.  To replace the file with a known good copy: **Copy Path\_And\_File\_Name\_Of\_Source\_File Path\_And\_File\_Name\_Of\_Destination**  
          

Tip

For example: copy c:\temp\admparse.dll c:\ windows\winsxs\x86_microsoft-windows-ie-adminkitmostfiles_31bf3856ad364e35_6.0.6000.16386_none_abfb5fd109dad8b8\admparse.dll

  1. Bad Pending.xml
    The file used to record operations required during system reboot is bad or corruptedCheckSUR.log does not record this information, however this can be easily identified by checking if one of the registry values below exist:

    1. HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide\@CorruptPendingXml (REG_SZ)

    2. HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide\@CorruptPendingXmlIdentifiers (REG_SZ)

Important

In Windows 7 and Windows Server 2008 R2, a restart may help resolve the problem by removing the corrupted file. While users may see that some updates fail after a reboot, reinstalling the updates should now succeed.
In Windows Vista and Windows Server 2008, no solution to recover this file exists. For more information followed method three in article 949358in the Microsoft® Knowledge Base (https://go.microsoft.com/fwlink/?LinkId=165004).

  1. Bad Winner Keys
    The registry used by the system to keep records of installed components is corrupt. CheckSUR.log does not record this information. However in Windows 7, this can be easily identified by checking if the registry value below exists:

    1. HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide\@CorruptWinners (REG_SZ)

Note

For Windows Vista SP1 and higher, check this phrase on %windir%\logs\CBS\CBS.log or CBS.persist.log to identify winners key corruption “Install-map entry missing component key in populate”.
CheckSUR does not currently repair this type of corruption. Attempting a System Restore or reinstalling the operating system is recommended.

Options for obtaining files

  1. Obtaining a file from another computer

Important

Adding too many files to the %windir%\Temp\CheckSUR\servicing\packages directory merely out of convenience (if doing so manually) is not the correct methodology to follow. For example, a power failure occurs during a service pack install and you have 50 .mum and .cat files that need to be replaced. Out of convenience, you manually copy all of the .mum and .cat files from the service pack cab files rather than singularly. CBS will perpetually fail install with a sharing violation error (80070020) when attempting further servicing operations on that package and the System Update Readiness tool will fail to detect any problems.

Important

Ensure that the computer being used to copy files from is using the same version of Windows and system architecture.
To identify a computer’s version, launch cmd.exe and execute winver. To identify a computer’s architecture, launch cmd.exe and execute wmic OS get osarchitecture.

The files are located in subdirectories below **%windir%**. See the following examples:

1.  \*.mum files are located in **%windir%\\servicing\\packages\\**  
      
2.  \*.manifest files are located in **%windir%\\winsxs\\manifests\\**  
      
3.  Package\*.cat files are located in **%windir%\\servicing\\packages\\**  
      
      
  1. Obtain files from the update package

    1. Identify which update package you need to download.

Important

You can only use this option if the file requested has a KB number associated with it. For Package_for_KB958690_sc_0~31bf3856ad364e35~amd64~~6.0.1.6.mum, the KB number is KB958690, the architecture version is amd64 (which is the same as x64) and the package version is 6.0.1.6.

2.  Download the KB from Microsoft[Help and Support](https://go.microsoft.com/fwlink/?linkid=113139).

3.  Expand the package.  
    Assuming you downloaded the msu package to the **%temp%** directory and you want to expand the package to **c:\\targetDir**: **expand %temp%\\Windows6.0-KB958690-x64.msu /f:\* c:\\targetDir**

4.  Expand the cab files to the same location: **expand Windows6.0-KB938979-x64.cab /f:\* c:\\targetDir**  
    All the files will be located in the above directory as only payload files are located in specific subdirectories.
    
    Occasionally, the required file may be a root package. These packages have no SKU information and follow a set prefix: **Package\_for\_KB958690~31bf3856ad364e35~amd64~~6.0.1.6.mum**. The root package extracted from the cab file will be named **update.mum**.
    
    To verify that the newly created update.mum is in fact the correct file, open the file with notepad.exe and ensure the following attributes are present in \<assemble\>\\\<assemblyIdentity\>
    
        name=”KB958690”
        processorArchitecture=”amd64" 
        version="6.0.1.6"
    
    If the **update.mum** is correct, rename it to **Package\_for\_KB958690~31bf3856ad364e35~amd64~~6.0.1.6.mum** before copying it to the checkSUR temporary directory.
    

Important

Renaming update.cat to Package_for_KB958690~31bf3856ad364e35~amd64~~6.0.1.6.cat is also required before replacing both .mum and .cat files.

  1. Obtaining the files from a Windows DVD
    The required files might be available on a Windows DVD.

    1. Launch an elevated command prompt

    2. Execute dism /mount-wim /wimfile:d:\sources\install.wim /index:1 /MountDir:c:\targetDir where d:\ is the directory the Windows DVD is mapped as and C:\targetDir is the empty directory where you want to mount the image.

    3. Locate the files under c:\targetDir\windows\servicing\packages or c:\targetDir\Windows\WinSxS\

    4. After copying the files, unmount the image with the following command:

      dism /unmount-wim /MountDir:c:\targetDir /discard