Trong bài viết này, chúng ta sẽ nói về Component Store trong Windows 8 và một số kịch bản sửa chữa của nó. Cần nhắc lại rằng kể từ Windows Vista, Microsoft đã giới thiệu khái niệm component-based servicing (dịch vụ dựa trên thành phần). Cấu trúc thành phần cho phép làm cho việc cài đặt / gỡ bỏ cập nhật, bản vá bảo mật và service pack ổn định hơn. Kiến trúc Windows 8 cũng dựa trên cùng hệ thống này. Các file của Windows Component Store nằm trong thư mục \Windows\WinSxS, có thuộc tính theo thời gian tăng đáng kể về kích thước (để biết chi tiết hơn về lý do kích thước thư mục này tăng theo thời gian và cách thu nhỏ nó, tham khảo bài viết này).
Tuy nhiên, trong một số trường hợp Component Store có thể bị hỏng, dẫn đến rắc rối khi cố gắng cài đặt Windows updates hoặc các ứng dụng Microsoft khác. Để sửa chữa Component Store trong các phiên bản Windows trước (Windows Vista, Windows 7, Windows Server 2008 /R2), Microsoft đã tạo một tiện ích đặc biệt – CheckSUR (System Update Readiness Tool – KB947821). Tiện ích này khá lớn (hơn 350 MB) và được cập nhật thường xuyên khi phát hành các bản cập nhật Windows mới.
Tiện ích này làm gì? System Update Readiness Tool xác minh tính toàn vẹn của các tài nguyên sau:
File trong các thư mục:
- %SYSTEMROOT%\Servicing\Packages
- %SYSTEMROOT%\WinSxS\Manifests
Nội dung các nhánh registry sau:
- %SYSTEMROOT%\WinSxS\Manifests
- HKEY_LOCAL_MACHINE\Schema
- HKEY_LOCAL_MACHINE\Components
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing
Nếu CheckSUR phát hiện một số lỗi hoặc không tương thích, nó sẽ cố gắng sửa chữa chúng.
Vấn đề với Component Store có thể dẫn đến các lỗi khác nhau trong quá trình cài đặt Windows update. Dưới đây là danh sách các mã lỗi điển hình, cần được khắc phục bằng tiện ích này.
Danh sách lỗi Windows Update do hỏng Component Store
| Mã | Lỗi | Mô tả |
| 0×80070002 | ERROR_FILE_NOT_FOUND | Hệ thống không tìm thấy file được chỉ định. |
| 0x8007000D | ERROR_INVALID_DATA | Dữ liệu không hợp lệ. |
| 0x800F081F | CBS_E_SOURCE_MISSING | Không tìm thấy nguồn cho gói hoặc file. |
| 0×80073712 | ERROR_SXS_COMPONENT_STORE_CORRUPT | Component store ở trạng thái không nhất quán. |
| 0x800736CC | ERROR_SXS_FILE_HASH_MISMATCH | File của thành phần không khớp với thông tin xác minh trong manifest thành phần. |
| 0x800705B9 | ERROR_XML_PARSE_ERROR | Không thể phân tích dữ liệu XML được yêu cầu. |
| 0×80070246 | ERROR_ILLEGAL_CHARACTER | Gặp ký tự không hợp lệ. |
| 0x8007370D | ERROR_SXS_IDENTITY_PARSE_ERROR | Chuỗi identity bị malformed. |
| 0x8007370B | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME | Tên thuộc tính trong identity không trong phạm vi hợp lệ. |
| 0x8007370A | ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE | Giá trị thuộc tính trong identity không trong phạm vi hợp lệ. |
| 0×80070057 | ERROR_INVALID_PARAMETER | Tham số không chính xác. |
| 0x800B0100 | TRUST_E_NOSIGNATURE | Không có chữ ký trong subject. |
| 0×80092003 | CRYPT_E_FILE_ERROR | Lỗi khi Windows Update đọc/ghi file. |
| 0x800B0101 | CERT_E_EXPIRED | Chứng chỉ yêu cầu không trong thời hạn hiệu lực. |
| 0x8007371B | ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE | Một hoặc nhiều thành viên yêu cầu của transaction không có mặt. |
| 0×80070490 | ERROR_NOT_FOUND | Windows không thể tìm kiếm cập nhật mới. |
Trong Windows 8 và Windows Server 2012, tương đương chức năng của tiện ích CheckSUR đã được tích hợp sẵn vào hệ thống và gọi là Inbox Corruption Repair. Inbox Corruption Repair có thể hoạt động ở hai chế độ: nền (background) và thủ công. Sửa chữa nền chạy tự động nếu có lỗi xảy ra khi cố gắng cài đặt Windows update. Sau đó Windows tự động cố gắng sửa chữa thành phần bị hỏng và cài đặt lại gói Windows Update. Nếu sửa chữa tự động không thể tự giải quyết vấn đề, quản trị viên có thể sửa lỗi thủ công, sau khi khôi phục khả năng hoạt động của Component Store. Điều này có thể thực hiện bằng DISM (lệnh Dism /Online /Cleanup-Image) hoặc PowerShell (cmdlet Repair-WindowsImage).
Để kiểm tra trạng thái Component Store, mở command line với quyền admin và chạy:
Dism /Online /Cleanup-Image /CheckHealth |
Mẹo.
- Khác với các công cụ Windows khác, DISM phân biệt chữ hoa chữ thường.
- Lệnh Dism /Cleanup-Image ghi log trong các file sau: C:\Windows\Logs\CBS\CBS.log và C:\Windows\Logs\DISM\dism.log
Lệnh PowerShell tương tự là:
Repair-WindowsImage -Online -CheckHealth |

Việc thực hiện CheckHealth mất vài phút. Như bạn thấy, trạng thái hiện tại của component store trong image là Healthy, tức là nó không cần sửa chữa.
Nếu phát hiện bất kỳ vấn đề hoặc lỗi nào, bạn phải chạy sửa chữa Store bằng lệnh:
Dism.exe /Online /Cleanup-Image /Restorehealth |
Lệnh PowerShell tương tự:
Repair-WindowsImage -Online -RestoreHealth |
Trong trường hợp này, các file hệ thống đã được khôi phục thành công:
The restore operation completed successfully. The component store corruption was repaired.
Nếu hệ thống không thể sửa chữa một số thành phần trong Store, bạn có thể cần đĩa cài đặt Windows 8. Cho đĩa vào DVD-ROM hoặc mount file ISO. Giả sử ký tự G đã được gán cho đĩa phân phối. Hãy hiển thị danh sách các phiên bản Windows 8 có sẵn trên đĩa bằng lệnh PoSh:
Get-WindowsImage -ImagePath G:\sources\install.wim |

Trong ví dụ này, chúng ta thấy chỉ có một image (Windows 8 Pro) với index 1 (Index: 1) trên đĩa.
Lệnh sau bắt đầu khôi phục kho lưu trữ với việc thay thế các thành phần bị hỏng từ image Windows 8 gốc:
Repair-WindowsImage -Online -RestoreHealth -Source G:\sources\install.wim:1 |
Sau khi sửa chữa xong, hãy đảm bảo Component Store khỏe mạnh.
Bước tiếp theo (tùy chọn) là kiểm tra tính toàn vẹn của file hệ thống bằng lệnh:
sfc /scannow |