เจาะลึกวิธีแก้ Windows Update Error 0x800f081f (CBS_E_SOURCE_MISSING)

เจาะลึกวิธีแก้ 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:

  1. ดาวน์โหลดไฟล์ Windows ISO ที่มี Version/Build ตรงกับเครื่องที่ใช้งาน
  2. คลิกขวาที่ไฟล์ ISO แล้วเลือก [Mount]
  3. ตรวจสอบโครงสร้างไฟล์ใน 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 โดยตรงเมื่อจำเป็น

ขั้นตอนการตั้งค่า:

  1. กดปุ่ม [Win + R] พิมพ์ gpedit.msc แล้วกด Enter
  2. นำทางไปยัง Path ต่อไปนี้:

    [Computer Configuration]

    > [Administrative Templates]

    > [System]

  3. ทางด้านขวา ให้หาและดับเบิ้ลคลิกที่:

    Specify settings for optional component installation and component repair

  4. เลือกสถานะเป็น [Enabled]
  5. ติ๊กถูกที่ช่อง Checkbox ด้านล่าง:

    [✓] Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)

  6. กด [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 เพื่อชี้เป้าไฟล์ที่ถูกต้องอย่างแม่นยำ