เคยประสบปัญหาที่ดิสก์จริงหรือ Virtual Disk ถูกใช้พื้นที่โดยไฟล์จำนวนมากในไดเรกทอรี WinSxS แต่ลบไม่ได้ เพราะไม่มี Permission แม้เป็น Administrator? น่าจะเคยเจอ
ทุกครั้งที่อัปเดต Windows จะดาวน์โหลดและเก็บไฟล์ที่ C:\Windows\WinSxS ตาม Microsoft เวอร์ชันก่อนหน้าของบาง Component จะเก็บไว้ระยะหนึ่ง เพื่อ Rollback หากจำเป็น หลังระยะเวลาหนึ่ง Component เก่าๆ จะถูกลบอัตโนมัติ แต่เราพบว่าไม่ได้ทำงานเสมอไป ต้องทำเอง

โปรดทราบ: ไม่ควรลบไฟล์ภายในโฟลเดอร์ WinSxS เนื่องจากอาจทำลายระบบอย่างรุนแรง จนบูทไม่ได้ และอัปเดตไม่ได้ แม้จะทำ ต้องมี Backup System Image เท่านั้น
กรณีของผม: Virtual Machine ไม่มีพื้นที่ว่างพอ เพราะ WinSxS ใช้ 30% ของดิสก์ VM มีดิสก์ 50 GB รัน Windows Server 2016 ตั้งแต่ ธันวาคม 2016 WinSxS ใช้ 15 GB พื้นที่ว่าง ยังมีอัปเดตที่ดาวน์โหลดมาตั้งแต่ธันวาคม 2016 เป้าหมายคืออธิบาย วิธีลดขนาดโฟลเดอร์ WinSxS และคืนพื้นที่ดิสก์
ขั้นตอนเดียวกันใช้ได้กับ Client OS ตั้งแต่ Windows 7 ถึง Windows 10 และ Server OS ตั้งแต่ Windows Server 2012 ถึง 2019
วิธีที่ 1: รัน Disk Cleanup
วิธีแรก ใช้ Disk Cleanup ผ่าน Utility ของ Windows ชื่อ Disk Cleanup
- กด Windows Explorer + E เปิด File Explorer
- คลิก This PC ไปที่ System Partition ค่าเริ่มต้น Local Disk (C:\)
- คลิกขวา Partition C:\ เลือก Properties

- ภายใต้ General คลิก Disk Cleanup รอจน Disk Cleanup คำนวณพื้นที่ที่ใช้ อาจใช้เวลานาน 몇 นาที

- เลือกไฟล์ที่ต้องการลบ คลิก OK
- คลิก Delete Files ยืนยันลบถาวร Disk Cleanup กำลังทำความสะอาดไฟล์ไม่จำเป็น
- เปิด File Explorer ตรวจสอบว่ามีพื้นที่ว่างเพิ่มขึ้นหรือไม่
วิธีที่ 2: ลดขนาดดิสก์ WinSxS ด้วย DISM
ส่วนที่สอง ลดขนาดดิสก์ WinSxS ด้วย DISM (Deployment Image Servicing and Management) เครื่องมือ Command-line ใช้ Mount และ Service Windows Images
- คลิกซ้าย Start Menu คลิก Windows PowerShell (Admin) หรือ Command Prompt (Admin) กรณีนี้ใช้ Command Prompt (Admin) บังคับรันเป็น Administrator ไม่ใช่ Standard User
- พิมพ์คำสั่ง กด Enter ลดขนาดโฟลเดอร์ WinSxS:
dism.exe /online /Cleanup-Image /StartComponentCleanup

- เสร็จแล้ว พิมพ์คำสั่ง กด Enter ลบเวอร์ชัน Superseded ของทุก Component ใน Component Store โปรดทราบ: Service Packs และ Updates ที่มีอยู่ ไม่สามารถถอนติดตั้งได้หลังคำสั่งนี้ แต่ไม่บล็อกการถอนติดตั้ง Service Packs หรือ Updates ในอนาคต
dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
- รีสตาร์ท Windows Server เปิด File Explorer ตรวจสอบพื้นที่ว่าง
วิธีที่ 3: ลบไฟล์เก่าใน WinSxS ใช้ด้วยความระมัดระวัง!
วิธีนี้ ลบไฟล์อัปเดตเก่าที่ดาวน์โหลดและติดตั้งในปี 2016, 2017, 2019 ก่อนทำ ต้อง Backup Image หรือ Snapshot VM ไม่แนะนำทำใน Production Environment แต่อยู่ใน Testing Environment เพื่อดูพฤติกรรม Windows หลังลบไฟล์/โฟลเดอร์ใน WinSxS
- กด Windows Explorer + E เปิด File Explorer
- ไปที่ C:\Window คลิกขวา WinSxS เลือก Properties
- คลิก Security แล้ว Advanced เปิด Special Permissions

- ภายใต้ Owner: TrustedInstaller คลิก Change
- ใส่ Object Name คือ Administrator ที่ใช้รัน Windows คลิก Check Names แล้ว OK
- คลิก Apply แล้ว ถ้าเพิ่ง Take Ownership ต้องปิดและเปิด Properties ใหม่ก่อนจะดู/เปลี่ยน Permission ได้

- คลิก Edit คลิก Add ใส่ Object Name = Administrator ที่ใช้รัน Windows คลิก Check Names แล้ว OK
- Select Account ให้ Allow Full Control
- คลิก Yes ยืนยันเปลี่ยน Permission บน System Folders คลิก Apply แล้ว OK ปิดหน้าต่างทั้งหมด
- ลบไฟล์เก่า กรณีนี้ลบไฟล์ปี 2016, 2017, 2018 จะคืนพื้นที่ประมาณ 11 GB