ในบทความนี้เราจะพูดถึง Component Store ใน Windows 8 และบางสถานการณ์ของการซ่อมแซมมัน ต้องนึกถึงว่าตั้งแต่ Windows Vista Microsoft ได้นำแนวคิด component based servicing มาใช้ โครงสร้างคอมโพเนนต์ช่วยให้การติดตั้ง/ลบอัปเดต แพทช์ความปลอดภัย และ Service Pack มีความเสถียรมากขึ้น สถาปัตยกรรมของ Windows 8 ก็ยังคงอิงตามระบบเดียวกัน ไฟล์ของ Windows Component Store ตั้งอยู่ในโฟลเดอร์ \Windows\WinSxS ซึ่งมีคุณสมบัติที่จะเพิ่มขนาดอย่างมีนัยสำคัญตามเวลา (สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเหตุผลที่ขนาดของโฟลเดอร์นี้เพิ่มขึ้นตามเวลาและวิธีหดตัวมัน โปรดดูบทความนี้)
อย่างไรก็ตาม ในบางกรณี Component Store อาจเสียหาย ทำให้เกิดปัญหาเมื่อพยายามติดตั้ง Windows Update หรือแอป Microsoft อื่นๆ ในการซ่อมแซม Component Store ใน Windows เวอร์ชันก่อนหน้า (Windows Vista, Windows 7, Windows Server 2008/R2) Microsoft ได้สร้างยูทิลิตี้พิเศษ – CheckSUR (System Update Readiness Tool – KB947821) ยูทิลิตี้นี้มีขนาดใหญ่พอสมควร (มากกว่า 350 MB) และได้รับการอัปเดตเป็นประจำพร้อมกับการเผยแพร่ Windows Update ใหม่ๆ
ยูทิลิตี้นี้ทำอะไร? System Update Readiness Tool ตรวจสอบความสมบูรณ์ของทรัพยากรต่อไปนี้:
ไฟล์ในไดเรกทอรีเหล่านี้:
- %SYSTEMROOT%\Servicing\Packages
- %SYSTEMROOT%\WinSxS\Manifests
เนื้อหาของสาขารีจิสทรีเหล่านี้:
- %SYSTEMROOT%\WinSxS\Manifests
- HKEY_LOCAL_MACHINE\Schema
- HKEY_LOCAL_MACHINE\Components
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing
หาก CheckSUR ตรวจพบข้อผิดพลาดหรือความไม่เข้ากันได้ บางอย่าง มันจะพยายามซ่อมแซมพวกมัน
ปัญหากับ Component Store อาจนำไปสู่ข้อผิดพลาดที่แตกต่างกันระหว่างการติดตั้ง Windows Update นี่คือรายการรหัสข้อผิดพลาดทั่วไป ซึ่งควรจะได้รับการแก้ไขด้วยยูทิลิตีนี้
รายการข้อผิดพลาด Windows Update ที่เกิดจากความเสียหายของ Component Store
| รหัส | ข้อผิดพลาด | คำอธิบาย |
| 0×80070002 | ERROR_FILE_NOT_FOUND | The system cannot find the file specified. |
| 0x8007000D | ERROR_INVALID_DATA | The data is invalid. |
| 0x800F081F | CBS_E_SOURCE_MISSING | The source for the package or file not found. |
| 0×80073712 | ERROR_SXS_COMPONENT_STORE_CORRUPT | The component store is in an inconsistent state. |
| 0x800736CC | ERROR_SXS_FILE_HASH_MISMATCH | A component's file does not match the verification information present in the component manifest. |
| 0x800705B9 | ERROR_XML_PARSE_ERROR | Unable to parse the requested XML data. |
| 0×80070246 | ERROR_ILLEGAL_CHARACTER | An invalid character was encountered. |
| 0x8007370D | ERROR_SXS_IDENTITY_PARSE_ERROR | An identity string is malformed. |
| 0x8007370B | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME | The name of an attribute in an identity is not within the valid range. |
| 0x8007370A | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE | The value of an attribute in an identity is not within the valid range. |
| 0×80070057 | ERROR_INVALID_PARAMETER | The parameter is incorrect. |
| 0x800B0100 | TRUST_E_NOSIGNATURE | No signature was present in the subject. |
| 0×80092003 | CRYPT_E_FILE_ERROR | An error occurred while Windows Update reads or writes to a file. |
| 0x800B0101 | CERT_E_EXPIRED | A required certificate is not within its validity period when verifying against the current system clock or the time stamp in the signed file. |
| 0x8007371B | ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE | One or more required members of the transaction are not present. |
| 0×80070490 | ERROR_NOT_FOUND | Windows could not search for new updates. |
ใน Windows 8 และ Windows Server 2012 เวอร์ชันที่เทียบเท่าทางฟังก์ชันของยูทิลิตี้ CheckSUR ได้ถูกรวมอยู่ในระบบแล้วและเรียกว่า Inbox Corruption Repair Inbox Corruption Repair สามารถทำงานในสองโหมด: แบบพื้นหลังและแบบมือوي โหมดซ่อมแซมพื้นหลังจะรัน โดยอัตโนมัติ หากเกิดข้อผิดพลาดเมื่อพยายามติดตั้ง Windows Update จากนั้น Windows จะพยายามซ่อมแซมคอมโพเนนต์ที่เสียหายและติดตั้งแพ็คเกจ Windows Update ใหม่ หากการซ่อมแซมอัตโนมัติไม่สามารถแก้ปัญหาได้ด้วยตัวเอง ผู้ดูแลระบบสามารถแก้ไขข้อผิดพลาด ด้วยตนเอง ได้ โดยกู้คืนการทำงานของ Component Store สามารถทำได้โดยใช้ DISM (คำสั่ง Dism /Online /Cleanup-Image) หรือ Powershell (cmdlet Repair-WindowsImage)
เพื่อตรวจสอบสถานะของ Component Store ให้เปิด command line ที่มีสิทธิ์สูงและรัน:
Dism /Online /Cleanup-Image /CheckHealth |
เคล็ดลับ
- ไม่เหมือนเครื่องมือ Windows อื่นๆ DISM ต้องการความแตกต่างของตัวพิมพ์เล็ก/ใหญ่ (case-sensitive)
- คำสั่ง Dism /Cleanup-Image เก็บบันทึกในไฟล์ต่อไปนี้: C:\Windows\Logs\CBS\CBS.log และ C:\Windows\Logs\DISM\dism.log
คำสั่ง Powershell เดียวกันคือ:
Repair-WindowsImage -Online -CheckHealth |

การดำเนินการ CheckHealth ใช้เวลาสักพักสองสามนาที ตามที่คุณเห็น สถานะปัจจุบันของ Component Store ในอิมเมจคือ Healthy กล่าวคือ ไม่จำเป็นต้องซ่อมแซม
หากตรวจพบปัญหาหรือข้อผิดพลาด คุณต้องรันการซ่อมแซม Store โดยใช้คำสั่ง:
Dism.exe /Online /Cleanup-Image /Restorehealth |
คำสั่ง Powershell เดียวกันคือ:
Repair-WindowsImage -Online -RestoreHealth |
ในกรณีนี้ ไฟล์ระบบได้รับการกู้คืนสำเร็จ:
The restore operation completed successfully. The component store corruption was repaired.
หากระบบไม่สามารถซ่อมแซมบางคอมโพเนนต์ใน Store ได้ คุณอาจต้องการดิสก์ติดตั้ง Windows 8 ใส่ดิสก์ลงใน DVD-ROM หรือแม้แต่มา운ท์ ISO-image สมมติ ตัวอักษร G ถูกกำหนดให้กับดิสก์กระจาย เรามาแสดงรายการเวอร์ชัน Windows 8 ที่พร้อมใช้งานบนดิสก์โดยใช้คำสั่ง PoSH:
Get-WindowsImage -ImagePath G:\sources\install.wim |

ในตัวอย่างนี้เราเห็นว่ามีอิมเมจเพียงหนึ่งอิมเมจ (Windows 8 Pro) ด้วยดัชนี 1 (Index: 1) บนดิสก์
คำสั่งต่อไปนี้เริ่มการกู้คืนที่เก็บข้อมูลด้วยการแทนที่คอมโพเนนต์ที่เสียหายจากอิมเมจ Windows 8 ต้นฉบับ:
Repair-WindowsImage -Online -RestoreHealth -Source G:\sources\install.wim:1 |
หลังจากซ่อมแซมเสร็จสิ้น ให้ตรวจสอบให้แน่ใจว่า Component Store แข็งแรง
ขั้นตอนต่อไป (เป็นทางเลือก) คือการตรวจสอบความสมบูรณ์ของไฟล์ระบบด้วยคำสั่ง:
sfc /scannow |