Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาด Windows

แก้ไข VirtualBox Error: NtCreateFile(\Device\VBoxDrvStub) STATUS_OBJECT_NAME_NOT_FOUND

หาก Oracle VM VirtualBox เริ่ม Virtual Machine ไม่ได้ และแสดง “NtCreateFile(\Device\VBoxDrvStub) failed: STATUS_OBJECT_NAME_NOT_FOUND (0xc0000034)” ปกติหมายถึง Kernel Driver ของ VirtualBox (เช่น VBoxDrv หรือ VBoxSup) หายไป, ถูกบล็อก, หรือ โหลดไม่ได้ โดยไม่มี Driver นี้ VirtualBox สร้าง Device Interface ที่คาดหวัง (Path VBoxDrvStub) ไม่ได้ ทำให้ VM หยุดที่ตอน Launch

สิ่งนี้มักเกิดหลัง: VirtualBox Update, การติดตั้งไม่สมบูรณ์, Windows Security บล็อกการติดตั้ง Driver, หรือเมื่อ Hyper-V / VBS (Virtualization-Based Security) เปลี่ยนวิธีจัดการ Virtualization และ Drivers บนระบบ

ขึ้นอยู่กับ VirtualBox Version และ Windows Setup VirtualBox อาจโหลด Driver ใน Native Mode ไม่ได้ หรือรันผ่าน Hyper-V เท่านั้น (อาจส่งผล Compatibility/Performance)

ก่อนเริ่ม: ทำ Restart หนึ่งครั้ง (ไม่ใช่ Shut down) บน PC หลายเครื่อง Shut down ใช้ Fast Startup และอาจไม่ Reload Drivers ให้เต็มที่ ในขณะที่ Restart บังคับ Full Driver Reload

1. เริ่ม/รีสตาร์ท VirtualBox Driver Service (VBoxDrv / VBoxSup)

หาก Driver ติดตั้งแล้วแต่ไม่ Run การ Start Service อาจแก้ Error ทันที วิธีนี้ใช้ได้ก็ต่อเมื่อ Driver/Service มีอยู่แล้ว

  1. ค้นหา Command Prompt ใน Windows Search
  2. คลิกขวา เลือก Run as administrator
  3. ก่อนอื่น ระบุชื่อ Service ของ VirtualBox Driver ที่มีบนระบบ:
    sc query type= driver | findstr /i vbox
  4. Start Driver Service ที่เจอ (ตัวอย่าง):
    net start vboxdrv
    หากบอก Service Name Invalid ลอง:
    net start vboxsup
    Success คือ: “The service was started successfully.”
  5. รีสตาร์ท PC และเปิด VirtualBox ใหม่

หากเจอ Error “service name is invalid” / “cannot be found” Driver น่าจะหายหรือลงทะเบียนไม่ถูกต้อง ไปวิธีถัดไป

Verify (ใช้ Service Name ที่คุณมีจริง):

sc query vboxdrv

หากระบบใช้ vboxsup แทน ให้รัน:

sc query vboxsup

Expected Result: หา STATE : 4 RUNNING

2. ติดตั้ง VirtualBox Driver (.inf) ด้วยตนเอง

Windows Security หรือ Policy Restrictions อาจป้องกัน VirtualBox ไม่ให้ติดตั้ง Drivers ระหว่าง Setup การติดตั้ง Driver .inf ด้วยตนเองจะ Register ให้ถูกต้อง เนื่องจาก VirtualBox Versions ต่างกัน ให้ติดตั้ง .inf ที่ตรงกับ Service ที่ต้องการ Start:

  • ถ้า vboxdrv หาย/Start ไม่ได้: ใช้โฟลเดอร์ vboxdrv ติดตั้ง VBoxDrv.inf
  • ถ้า vboxsup หาย/Start ไม่ได้: ใช้โฟลเดอร์ vboxsup ติดตั้ง VBoxSup.inf
  1. เปิด File Explorer ไปที่โฟลเดอร์ใดโฟลเดอร์หนึ่งที่มีอยู่:
    C:\Program Files\Oracle\VirtualBox\drivers\vboxdrv
    C:\Program Files\Oracle\VirtualBox\drivers\vboxsup
  2. หาไฟล์ลงท้าย .inf (เช่น VBoxDrv.inf หรือ VBoxSup.inf)
  3. คลิกขวาไฟล์ .inf เลือก Install Note: หากไม่เห็น File Extensions เปิด View เปิด File name extensions หรือเช็ค Properties แต่ละไฟล์
    ถ้า “Install” ไม่มี ข้ามไป Method 4 ทำ Repair/Clean Reinstall (รัน Installer as Administrator)
  4. รีสตาร์ท PC หลังติดตั้งเสร็จ
  5. หลัง Reboot เปิด Command Prompt as Administrator เริ่ม Service ที่ตรงกัน (ใช้ชื่อที่คุณมีจริง):
    sc start vboxdrv
    หรือ หากระบบใช้ VBoxSup:
    sc start vboxsup
    Success คือ: “STATE : 4 RUNNING” เมื่อรัน sc query <service-name>
  6. เปิด VirtualBox เริ่ม VM ใหม่

หากยังเจอ Error เดิม ให้ดำเนินต่อ อาจมี Virtualization/Security Conflict (Hyper-V/VBS/Memory Integrity) หรือ Installation ชำรุด

3. ปิด Hyper-V และ Virtualization Features (ขั้นตอนวินิจฉัย)

บนบางระบบ Hyper-V และ VBS อาจป้องกัน VirtualBox ไม่ให้โหลด Driver ใน Native Mode หรือเปลี่ยนวิธี VirtualBox เข้าถึง Hardware Virtualization การปิด Features เหล่านี้เป็นวิธีดีในการยืนยันว่าปัญหาเป็น Virtualization/Security Conflict

หมายเหตุ: การปิดอาจส่งผลต่อ WSL2, Docker Desktop, Windows Sandbox, และ Emulators บางตัว คุณสามารถเปิดกลับได้หลังทดสอบ

  1. ค้นหา Turn Windows features on or off ใน Windows Search เปิด
  2. หา Hyper-V ยกเลิกถูก
  3. ยกเลิกถูกตัวเลือกเหล่านี้ด้วยหากเปิดอยู่:
    • Windows Hypervisor Platform
    • Virtual Machine Platform
    • Windows Sandbox (ถ้ามี)
  4. คลิก OK รีสตาร์ท PC
  5. เปิด VirtualBox ทดสอบ VM

Optional แต่สำคัญ: แม้ Hyper-V ปิด Windows อาจยังใช้ Virtualization ผ่าน VBS / Memory Integrity เพื่อทดสอบ ให้ปิด Memory Integrity จาก: Windows Security > Device Security > Core Isolation แล้ว Restart และทดสอบอีกครั้ง

Tip: หาก Windows บล็อก Driver ให้เช็ค Windows Security > Protection History หา Events ที่กล่าวถึง VirtualBox, VBoxDrv.sys, VBoxSup.sys, หรือ “driver blocked” หากมีตัวเลือก Allow หรือ Restore ให้ Apply แล้ว Reinstall/Repair VirtualBox

4. Repair หรือ Clean Reinstall VirtualBox

หาก Driver Files เสียหาย, Mismatch, หรือถูกลบบางส่วน Reinstall รับรองว่า Drivers และ Services ที่ถูกต้องติดตั้งและลงทะเบียนใหม่
หากมี Installer อยู่แล้ว ลอง Repair ก่อน (ถ้ามี) หากไม่ได้ ทำ Clean Reinstall

  1. Uninstall Oracle VM VirtualBox จาก: Settings > Apps > Installed apps (หรือ Apps & Features)
  2. รีสตาร์ท PC หลัง Uninstall
  3. Optional Cleanup (เฉพาะถ้า Leftovers คงเหลือหลัง Uninstall): เปิด File Explorer ไป:
    C:\Windows\System32\drivers
  4. หาไฟล์คงเหลือชื่อ VBox*.sys (เช่น VBoxDrv.sys, VBoxSup.sys) Important: ลบ VBox*.sys เฉพาะตอน VirtualBox Uninstall แล้วสมบูรณ์ และคุณระบุได้ชัดว่าเป็น Leftovers ของ VirtualBox
  5. ลบไฟล์ VBox*.sys เหล่านั้นถ้ามี หาก Windows ไม่ให้ลบ อย่าบังคับ ดำเนิน Reinstall ต่อ
  6. ดาวน์โหลดและติดตั้ง VirtualBox เวอร์ชันล่าสุด รีสตาร์ท PC Tip: คลิกขวา Installer เลือก Run as administrator ให้ Drivers ติดตั้งถูกต้อง
  7. หากใช้ VirtualBox Extension Pack (USB 2/3, RDP, etc.) ติดตั้ง Matching Version สำหรับ VirtualBox Build
  8. เปิด VirtualBox เริ่ม VM อีกครั้ง