เจาะลึกวิธีแก้ Windows Update Error 0x800f081f (CBS_E_SOURCE_MISSING)
ปัญหา Error 0x800f081f เป็นหนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดและสร้างความสับสนให้ผู้ดูแลระบบมากที่สุด ปัญหานี้มักเกิดขึ้นเมื่อพยายามติดตั้ง .NET Framework 3.5 หรือทำการ Update Windows 10/11 สาเหตุที่แท้จริงคือ CBS_E_SOURCE_MISSING ซึ่งหมายความว่าระบบปฏิบัติการหาไฟล์ต้นฉบับที่จำเป็นสำหรับการติดตั้งไม่เจอ ทั้งในเครื่อง (Local WinSxS) และบน Windows Update Server
1. การวิเคราะห์ Log และโครงสร้างไฟล์ (Root Cause Analysis)
ก่อนที่จะทำการแก้ไข เราต้องเข้าใจก่อนว่า Windows พยายามหาไฟล์ที่ไหน โดยปกติเมื่อคุณรันคำสั่ง DISM หรือ Windows Update ระบบจะทำงานผ่าน CBS.log คุณสามารถตรวจสอบ Log ได้ที่โครงสร้างไฟล์ดังนี้:
C:\Windows\
├── Logs\
│ ├── CBS\
│ │ └── CBS.log <-- (ตรวจสอบไฟล์นี้)
│ └── DISM\
│ └── dism.log
หากคุณเปิดไฟล์ Log ขึ้นมาและค้นหาคำว่า 0x800f081f คุณจะพบข้อความลักษณะนี้:
Error CBS Exec: Failed to download payload: [Payload_Name]
Error CBS Failed to find payload: [Payload_Name] in any known source
Error CBS Failed to execute command line. [HRESULT = 0x800f081f - CBS_E_SOURCE_MISSING]
2. วิธีแก้ไขแบบที่ 1: ใช้ Source จากไฟล์ ISO (Offline Repair)
นี่คือวิธีที่ “ได้ผลแน่นอนที่สุด” เพราะเป็นการบังคับให้ Windows ดึงไฟล์ระบบที่ถูกต้องจากแผ่นติดตั้ง (ISO) โดยตรง แทนการพยายามดาวน์โหลดที่ล้มเหลว
ขั้นตอนการเตรียม Source:
- ดาวน์โหลดไฟล์ Windows ISO ที่มี Version/Build ตรงกับเครื่องที่ใช้งาน
- คลิกขวาที่ไฟล์ ISO แล้วเลือก [Mount]
- ตรวจสอบโครงสร้างไฟล์ใน Drive ที่ Mount ขึ้นมา (สมมติว่าเป็น Drive
D:) จะต้องมีไฟล์ดังนี้:
D:\ (ISO Drive)
├── sources\
│ ├── install.wim <-- (ไฟล์ Source หลัก)
│ │ (หรือ install.esd ในบางเวอร์ชัน)
│ └── sxs\ <-- (Source สำหรับ .NET Framework 3.5)
│ └── microsoft-windows-netfx3-....cab
ขั้นตอนการรันคำสั่ง (Command Line):
เปิด Command Prompt หรือ PowerShell ในโหมด [Run as Administrator] แล้วใช้คำสั่งต่อไปนี้:
คำสั่งตรวจสอบสถานะ (ScanHealth):
dism /online /cleanup-image /scanhealth
คำสั่งซ่อมแซมโดยระบุ Source (RestoreHealth):
dism /online /cleanup-image /restorehealth /source:wim:D:\sources\install.wim:1 /limitaccess
| Parameter | คำอธิบาย |
|---|---|
/Source:wim:... |
ระบุที่อยู่ของไฟล์ WIM จาก ISO เพื่อใช้เป็นแหล่งข้อมูลซ่อมแซม |
:1 |
ระบุ Index ของ Windows Edition ภายในไฟล์ WIM (ส่วนใหญ่ Index 1 คือ Pro/Home) |
/LimitAccess |
สั่งให้ DISM ห้าม ติดต่อ Windows Update (ป้องกันการวนกลับไปเจอ Error เดิม) |
3. วิธีแก้ไขแบบที่ 2: ตั้งค่า Group Policy (สำหรับเครื่องที่มี WSUS)
หากคอมพิวเตอร์อยู่ในองค์กร (Corporate Environment) ที่มีการใช้ WSUS ปัญหามักเกิดจาก WSUS ไม่มีไฟล์ Optional Component เหล่านี้ เราต้องตั้งค่าให้เครื่อง Client “ข้าม” WSUS ไปโหลดจาก Microsoft โดยตรงเมื่อจำเป็น
ขั้นตอนการตั้งค่า:
- กดปุ่ม [Win + R] พิมพ์
gpedit.mscแล้วกด Enter - นำทางไปยัง Path ต่อไปนี้:
[Computer Configuration]
> [Administrative Templates]
> [System]
- ทางด้านขวา ให้หาและดับเบิ้ลคลิกที่:
Specify settings for optional component installation and component repair
- เลือกสถานะเป็น [Enabled]
- ติ๊กถูกที่ช่อง Checkbox ด้านล่าง:
[✓] Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)
- กด [OK] แล้วรันคำสั่ง
gpupdate /forceใน CMD
4. กรณีเฉพาะ: ติดตั้ง .NET Framework 3.5 ไม่ผ่าน
หาก Error 0x800f081f เกิดขึ้นเฉพาะตอนพยายามเปิดใช้งาน .NET 3.5 ให้ใช้คำสั่ง DISM แบบเจาะจง Feature ดังนี้ (ต้อง Mount ISO ไว้ที่ไดรฟ์ D: ก่อน):
dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess
เมื่อรันเสร็จสิ้น คุณควรจะเห็นข้อความ:
The operation completed successfully.
บทสรุป
Error 0x800f081f คือปัญหาเรื่อง “เส้นทาง” (Path) ของไฟล์ระบบ การแก้ไขที่ยั่งยืนที่สุดไม่ใช่การรัน sfc /scannow ซ้ำๆ แต่คือการเตรียม “Clean Source” (ISO) ให้กับระบบ และใช้คำสั่ง DISM เพื่อชี้เป้าไฟล์ที่ถูกต้องอย่างแม่นยำ