ค้นหาเว็บไซต์

วิธีล้างข้อมูลและบีบอัดโฟลเดอร์ WinSxS บน Windows 10/Windows Server


ในบทความนี้เราจะพูดถึงโฟลเดอร์ WinSxS ใน Windows สาเหตุของการเติบโตอย่างต่อเนื่องและวิธีการล้างข้อมูล ไดเรกทอรี C:\Windows\WinSxS เป็นที่เก็บส่วนประกอบของ Windows ไดเร็กทอรีนี้ประกอบด้วยไฟล์ DLL ไฟล์ไบนารี และ XML ที่จำเป็นสำหรับการติดตั้งและการทำงานของบทบาทหรือคุณลักษณะต่างๆ ของ Windows เมื่อติดตั้งการอัปเดต Windows (โดยปกติจะเกิดขึ้นทุกเดือน) ระบบจะติดตั้งส่วนประกอบที่อัปเดตเวอร์ชันใหม่ในขณะที่เวอร์ชันเก่าจะถูกบันทึกลงในโฟลเดอร์ WinSxS (จำเป็นต้องจัดเตรียมความเข้ากันได้และทำให้สามารถย้อนกลับได้ เวอร์ชันก่อนหน้าของคอมโพเนนต์เมื่อคุณถอนการติดตั้งการอัปเดต Windows)

ไดเร็กทอรี WinSxS มีขนาดเพิ่มขึ้นเมื่อเวลาผ่านไป ยิ่งกว่านั้นขนาดของมันไม่ได้ถูก จำกัด ด้วยสิ่งใด ๆ (แม้ว่าในทางปฏิบัติขนาดของโฟลเดอร์ WinSxS ใน Windows 10 จะไม่ค่อยเกิน 15-20 GB)

ในบทความนี้ เราจะพูดถึงวิธีที่ปลอดภัยที่สุดในการล้างโฟลเดอร์ WinSxS บน Windows 10 และ Windows Server 2016/2019:

  • เพิ่มประสิทธิภาพการเก็บคอมโพเนนต์ และลบไฟล์คอมโพเนนต์ Windows เวอร์ชันเก่าที่เหลืออยู่หลังจากติดตั้งการอัปเดต Windows

  • คุณลักษณะตามความต้องการ - ช่วยให้คุณสามารถลบส่วนประกอบ Windows ที่ไม่ได้ใช้ออกจากดิสก์

  • เปิดใช้งานการบีบอัด NTFS ในโฟลเดอร์ WinSxS ซึ่งเป็นวิธีลดขนาดของไดเร็กทอรี WinSxS โดยใช้การบีบอัดในตัวของระบบไฟล์ NTFS

ผู้ใช้หลายคนมักจะถามว่า: สามารถลบไฟล์ด้วยตนเองจากโฟลเดอร์ WinSxS ได้หรือไม่ คำตอบคือไม่เด็ดขาด! การกระทำเหล่านี้อาจทำให้อิมเมจ Windows ของคุณเสียหายได้ แม้ว่าความพยายามบางอย่างในการลบไฟล์ออกจากโฟลเดอร์ WinSxS อาจสำเร็จ แต่ก็ไม่แนะนำให้ใช้วิธีนี้

จะตรวจสอบขนาดจริงของโฟลเดอร์ WinSxS บน Windows 10 ได้อย่างไร

วิธีที่ง่ายที่สุดในการรับขนาดปัจจุบันของโฟลเดอร์ WinSxS บน Windows คือเปิดคุณสมบัติของ

%windir%\WinSxS

โฟลเดอร์ใน File Explorer (หรือใช้สคริปต์ PowerShell) แต่โปรดจำไว้ว่าตัวจัดการไฟล์ส่วนใหญ่ (รวมถึง File Explorer) แสดงขนาดโฟลเดอร์ WinSxS ที่ใหญ่กว่าที่ใช้บนดิสก์เล็กน้อย

ความจริงก็คือไดเร็กทอรี WinSxS มีฮาร์ดลิงก์จำนวนมาก (ลิงก์สัญลักษณ์) ไปยังไฟล์ระบบในโฟลเดอร์อื่นๆ ตัวจัดการไฟล์ เมื่อคำนวณขนาดของโฟลเดอร์ WinSxS ให้คำนึงถึงขนาดของไฟล์ที่อ้างอิงโดยฮาร์ดลิงก์ แต่สิ่งนี้ไม่ถูกต้อง

คุณสามารถค้นหาขนาดจริงของโฟลเดอร์ WinSxS บนดิสก์โดยใช้เครื่องมือ du จาก Sysinternals:

 du -v c:\windows\winSXS

คุณยังสามารถวิเคราะห์ขนาดของที่เก็บส่วนประกอบ (โฟลเดอร์ WinSxS) โดยใช้คำสั่ง DISM:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

Deployment Image Servicing and Management tool
[==========================100.0%==========================]
Component Store (WinSxS) information:
Windows Explorer Reported Size of Component Store : 8.44 GB
Actual Size of Component Store : 8.15 GB
Shared with Windows : 5. 74GB
Backups and Disabled Features : 1.97 GB
Cache and Temporary Data : 438.31 MB
Date of Last Cleanup : 2021-02-22 20:37:29
Number of Reclaimable Packages : 1
Component Store Cleanup Recommended : Yes
The operation completed successfully.

อย่างที่คุณเห็น ในกรณีนี้ ฉันสามารถลดขนาดของโฟลเดอร์ WinSxS ลงได้ (1,97 + 0,44) Gb

คำสั่ง DISM ยังช่วยให้คุณตรวจสอบและซ่อมแซมอิมเมจ Windows ของคุณ:

DISM /Online /Cleanup-Image /RestoreHealth

วิธีล้าง Component Store (โฟลเดอร์ WinSxS) บน Windows

วิธีที่เร็วและง่ายที่สุดในการล้าง Windows Component Store (โฟลเดอร์ WinSxS) คือการปรับพื้นที่จัดเก็บข้อมูลให้เหมาะสมด้วยคำสั่ง:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

นี้

StartComponentCleanup

ตัวเลือก DISM รองรับ Windows ทุกรุ่นตั้งแต่ Windows 8 และ Windows Server 2012

หลังจากทำความสะอาดเสร็จแล้ว ให้ตรวจสอบขนาดปัจจุบันของที่เก็บส่วนประกอบ:

Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore

ในตัวอย่างของฉัน สิ่งนี้จะลดขนาดของโฟลเดอร์ WinSxS ลง 2.4 GB

นี้

/StartComponentCleanup

ตัวเลือกมีตัวเลือก /ResetBase เพิ่มเติมที่ช่วยให้คุณสามารถลบคอมโพเนนต์เวอร์ชันก่อนหน้าทั้งหมดที่เหลืออยู่หลังจากติดตั้งการอัปเดต Windows หลังจากนั้น คุณจะไม่สามารถลบการอัปเดตหรือ Service Pack ที่ติดตั้งไว้ได้ และปุ่ม ถอนการติดตั้ง จะหายไปจากรายการแผงควบคุม ถอนการติดตั้งการอัปเดต) ในการล้างคอมโพเนนต์เวอร์ชันเก่า ให้เรียกใช้:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

ใน Windows 7 และ Windows Server 2008 R2 มีการใช้ตัวเลือก DISM เพิ่มเติมเพื่อล้างส่วนประกอบเวอร์ชันเก่าที่เหลืออยู่หลังจากติดตั้งเซอร์วิสแพ็ค

DISM /online /Cleanup-Image /spsuperseded

คุณยังสามารถลบไฟล์อัพเดทเก่าได้โดยใช้วิซาร์ด “การล้างข้อมูลบนดิสก์”:

  1. เรียกใช้

    cleanmgr

    คำสั่งในฐานะผู้ดูแลระบบ

  2. เลือกดิสก์และในหน้าต่างถัดไป คลิกปุ่ม “ล้างไฟล์ระบบ ”

  3. จากนั้นเลือกตัวเลือก “Windows update cleanup ” เครื่องมือ Disk Cleanup จะแสดงพื้นที่ว่างที่คุณสามารถเพิ่มได้โดยการลบไฟล์อัพเดต Windows เก่า ในตัวอย่างของฉัน นี่คือ 324 MB คลิก ตกลง เพื่อเริ่มการล้างข้อมูล

หลังจากล้างที่เก็บคอมโพเนนต์โดยใช้ DISM เสร็จแล้ว ให้ตรวจสอบว่ามีพื้นที่ว่างในดิสก์เท่าใด
นอกจากนี้ Windows 10/Windows Server 2016 Task Scheduler ยังมีงานบำรุงรักษาอัตโนมัติแบบพิเศษที่เพิ่มประสิทธิภาพและล้างโฟลเดอร์ WinSxS เป็นประจำ (ดำเนินการเช่นเดียวกับ DISM ด้วยพารามิเตอร์ StartComponentCleanup) งาน StartComponentCleanup นี้อยู่ภายใต้ส่วน \Microsoft\Windows\Servicing ของ

taskschd.msc

. งานนี้ทำงานในพื้นหลังและลบคอมโพเนนต์เวอร์ชันเก่ากว่า 30 วันที่ถูกแทนที่ด้วยไฟล์ใหม่โดยอัตโนมัติ

คุณสามารถเริ่มงานนี้ด้วยตนเองดังนี้:

schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

ลบบทบาทและคุณสมบัติที่ไม่ได้ใช้ออกจาก Windows 10/Windows Server

คุณลักษณะตามความต้องการ ใน Windows อนุญาตให้ลบไฟล์ไบนารีของบทบาทที่ไม่ได้ใช้ออกจากโฟลเดอร์ WinSxS คุณสามารถลบบทบาทและคุณสมบัติไบนารีบน Windows Server โดยใช้ Uninstall-WindowsFeature PoweShell cmdlet

Windows 10 ไม่มี Uninstall-WindowsFeature cmdlet และคุณต้องใช้ DISM.exe เพื่อลบคุณลักษณะออกจากอิมเมจ Windows

โปรดทราบว่า DISM ซึ่งแตกต่างจาก

Uninstall-WindowsFeature

PowerShell cmdlet ไม่ลบคุณสมบัติที่ขึ้นต่อกัน

สามารถรับรายการคุณสมบัติทั้งหมดที่มีอยู่ในอิมเมจ Windows 10 ได้โดยใช้คำสั่ง:

DISM.exe /Online /English /Get-Features /Format:Table

หากต้องการลบ เช่น คุณลักษณะ TelnetClient จากอิมเมจ Windows (จากโฟลเดอร์ WinSxS) ให้เรียกใช้คำสั่ง:

DISM.exe /Online /Disable-Feature /Featurename:TelnetClient /Remove

หากคุณแสดงรายการคุณลักษณะตามความต้องการทั้งหมดที่มีใน Windows คุณจะเห็นว่าสถานะคอมโพเนนต์เปลี่ยนเป็น ปิดใช้งานโดยลบ Payload แล้ว

ดังนั้น Windows จึงช่วยลดขนาดของโฟลเดอร์ WinSxS ได้อย่างมากโดยการลบส่วนประกอบที่ไม่ได้ใช้ออกจากดิสก์ สิ่งเดียวคือวิธีการล้างข้อมูลนี้เหมาะสำหรับผู้ใช้ขั้นสูงที่คุ้นเคยกับคุณสมบัติและวัตถุประสงค์ของ Windows 10 เท่านั้น

วิธีเปิดใช้งานการบีบอัด NTFS บนโฟลเดอร์ WinSxS บน Windows 10

อีกวิธีหนึ่งในการลดขนาดของไดเร็กทอรี WinSxS บน Windows 10 คือการบีบอัดเนื้อหาไดเร็กทอรีในระดับของระบบไฟล์ NTFS

หมายเหตุ ในกรณีของการแทรกแซงที่ไม่ได้มาตรฐานในการกำหนดค่าระบบ ขอแนะนำอย่างยิ่งให้คุณสร้างการสำรองข้อมูลทั้งหมดของอิมเมจ Windows 10 ของคุณ

  1. เปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบ

  2. หยุดและปิดใช้งานบริการ Windows Installer และ Windows Module Installer :

    sc stop msiserver
    sc stop TrustedInstaller
    sc config msiserver start= disabled
    sc config TrustedInstaller start= disabled
  3. มาสำรองข้อมูลรายการควบคุมการเข้าถึง (ACL) ที่กำหนดให้กับไฟล์และโฟลเดอร์ในไดเร็กทอรี WinSxS โดยใช้เครื่องมือ icacls ในตัว สำเนาสำรองของ ACL เป็นไฟล์ข้อความธรรมดาที่แสดงรายการไฟล์และไดเร็กทอรีทั้งหมดและสิทธิ์ NTFS ที่กำหนดให้กับไฟล์เหล่านี้ (ไฟล์นี้จำเป็นสำหรับการกู้คืน ACL ดั้งเดิมในภายหลัง):

    icacls "%WINDIR%\WinSxS" /save "%WINDIR%\WinSxS_NTFS.acl" /t

  4. กำหนดตัวเองเป็นเจ้าของโฟลเดอร์ WinSxS และโฟลเดอร์ย่อยทั้งหมด:

    takeown /f "%WINDIR%\WinSxS" /r
  5. ให้สิทธิ์การควบคุมบัญชีของคุณอย่างสมบูรณ์ในไดเร็กทอรี WinSxS:

    icacls "%WINDIR%\WinSxS" /grant "%USERDOMAIN%\%USERNAME%":(F) /t
  6. ตอนนี้คุณสามารถบีบอัดไฟล์ในไดเร็กทอรี WinSxS โดยใช้คำสั่ง compact เนื่องจาก Windows สามารถใช้ไฟล์บางไฟล์ได้ คุณต้องระบุ

    /i

    ตัวเลือก. มิฉะนั้น การบีบอัดจะหยุดที่ไฟล์แรกที่ถูกล็อค (ใน Windows 10 คุณสามารถใช้การบีบอัด LZX ขั้นสูงกว่านี้ได้):

    compact /s:"%WINDIR%\WinSxS" /c /a /i *

  7. คืนค่าเจ้าของไดเร็กทอรี WinSxS กลับสู่ TrustedInstaller:

    icacls "%WINDIR%\WinSxS" /setowner "NT SERVICE\TrustedInstaller" /t
  8. กู้คืน ACL ดั้งเดิมสำหรับรายการโฟลเดอร์ WinSxS โดยใช้ไฟล์สำรอง ACL ที่คุณสร้างไว้ก่อนหน้านี้:

    icacls "%WINDIR%" /restore "%WINDIR%\WinSxS_NTFS.acl"
  9. คืนค่าประเภทการเริ่มต้นเริ่มต้นสำหรับบริการ Windows Installer และ Windows Module Installer:

    sc config msiserver start= demand
    sc config TrustedInstaller start= demand

ตรวจสอบขนาดปัจจุบันของโฟลเดอร์ WinSxS:

อย่างที่คุณเห็น ในตัวอย่างของเรา ขนาดของโฟลเดอร์ WinSxS หลังการบีบอัดลดลงจาก 9.4GB เป็น 6.5GB (ประมาณหนึ่งในสาม) ไม่เลว โดยเฉพาะอย่างยิ่งสำหรับไดรฟ์ SSD ขนาดเล็ก

คำสั่งเหล่านี้สามารถเรียกใช้แยกกันได้ (จากนั้นจะง่ายกว่ามากในการติดตามผลลัพธ์ของแต่ละคำสั่ง) หรือใช้ในไฟล์สคริปต์เดียว หากคุณเรียกใช้ขั้นตอนการบีบอัดที่อธิบายไว้สำหรับรายการในโฟลเดอร์ WinSxS จะเริ่มทำงาน คุณสามารถดาวน์โหลดไฟล์แบตช์ที่พร้อมใช้งานเพื่อเปิดใช้งานการบีบอัด NTFS บน WinSxS ได้ที่นี่: winsxs_ntfs_compress.bat

คุณสามารถใช้สคริปต์นี้เป็นประจำได้เนื่องจากไฟล์ที่ไม่มีการบีบอัดใหม่จะปรากฏในโฟลเดอร์ WinSxS หลังจากที่คุณติดตั้งการอัปเดตหรือแอพ Windows ใหม่

การบีบอัดโฟลเดอร์ WinSxS จะมีผลอย่างไร Windows ทำงานอย่างโปร่งใสด้วยไฟล์บีบอัด อย่างไรก็ตาม เมื่อประมวลผลไฟล์ดังกล่าว อาจต้องใช้เวลา CPU เพิ่มเติมในการคลาย/บีบอัดไฟล์ ซึ่งอาจทำให้การทำงานช้าลงเล็กน้อยเมื่อติดตั้งส่วนประกอบหรือการอัปเดต Windows อย่างไรก็ตาม สำหรับ CPU สมัยใหม่ การดำเนินการบีบอัด/คลายการบีบอัดไฟล์จะดำเนินการเกือบจะทันที ดังนั้นผู้ใช้อาจไม่ได้สังเกตเห็นผลกระทบที่แท้จริงต่อประสิทธิภาพการทำงาน

บทความที่เกี่ยวข้อง