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

แก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น

ผู้ใช้ Windows หลายคนเจอข้อผิดพลาด “The process cannot access the file because it is being used by another process” ส่วนใหญ่ปัญหาเกิดขึ้นเมื่อผู้ใช้พยายามรันคำสั่ง netsh บางผู้ใช้รายงานว่าสำหรับพวกเขา ข้อความข้อผิดพลาดปรากฏเมื่อพยายามคลิกขวาเว็บไซต์ใน IIS (Internet Information Services) MMC (Microsoft Management Console) snap-in

แก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น

ปัญหานี้รายงานว่าพบได้บน Windows Vista, Windows 7, Windows 8.1, Windows 10 และ Windows Server หลายเวอร์ชัน

สาเหตุที่กระบวนการถูกใช้โดยกระบวนการอื่น

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

  • คำสั่งต้องการสิทธิ์แอดมิน — หากคุณเจอข้อผิดพลาดภายในเทอร์มินัล น่าจะเป็นเพราะคุณไม่มีสิทธิ์ผู้ดูแลระบบในการทำการเปลี่ยนแปลง ผู้ใช้หลายคนในสถานการณ์คล้ายกันแก้ไขปัญหาได้โดยการให้สิทธิ์แอดมิน
  • กระบวนการอื่นใช้พอร์ต 80 หรือพอร์ต 443 — นี้เป็นเรื่องปกติกับคอมพิวเตอร์ที่รัน IIS (Internet Information Services) หากกระบวนการอื่นใช้พอร์ตทั้งสองนี้ คุณจะเห็นข้อความข้อผิดพลาดนี้
  • รีจิสทรี ListenOnlyList ไม่ได้ตั้งค่าอย่างถูกต้อง — สถานการณ์ทั่วไปอีกอย่างกับ IIS (Internet Information Services) ที่จะกระตุ้นข้อผิดพลาดนี้คือ การตั้งค่ารีจิสทรี ListenOnlyList ไม่ถูกต้อง

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

เพื่อผลลัพธ์ที่ดีที่สุด โปรดทำตามวิธีด้านล่างตามลำดับ จนกว่าคุณจะพบวิธีแก้ไขที่มีประสิทธิภาพในการแก้ไขข้อผิดพลาดในสถานการณ์เฉพาะของคุณ

มาเริ่มกัน!

วิธี 1: รันคำสั่งด้วยสิทธิ์แอดมิน

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

โปรดทราบว่าการดำเนินการแบบนี้จะต้องการสิทธิ์ผู้ดูแลระบบ เพื่อให้แน่ใจว่าหน้าต่าง CMD ที่คุณพยายามดำเนินการมีสิทธิ์แอดมิน โปรดทำตามขั้นตอนด้านล่าง:

  1. กด Windows key + R เพื่อเปิดกล่องโต้ตอบ Run พิมพ์ “cmd” และกด Ctrl + Shift + Enter เพื่อเปิด Command Prompt ที่มีสิทธิ์สูง (elevated)แก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  2. เมื่อได้รับแจ้งจาก UAC (User Account Control) ให้คลิก Yes เพื่อให้สิทธิ์แอดมิน
  3. ใน Command Prompt ที่มีสิทธิ์สูง ให้รันคำสั่งอีกครั้ง และดูว่าคุณยังเจอข้อความข้อผิดพลาดเดียวกันหรือไม่

หากคุณยังได้ข้อผิดพลาด “The process cannot access the file because it is being used by another process” หรือสถานการณ์นี้ไม่เกี่ยวข้อง ให้เลื่อนลงไปที่วิธีถัดไปด้านล่าง

วิธี 2: ตั้งช่วง IP ที่แตกต่างกัน

หากคุณพยายามแก้ไขข้อขัดแย้ง DNS โดยใช้ netsh และวิธีข้างต้นไม่ช่วย คุณอาจลองวิธีที่แตกต่างกัน

ผู้ใช้หลายคนที่ต่อสู้กับข้อความข้อผิดพลาดเดียวกันพบว่าข้อขัดแย้งได้รับการแก้ไขหลังจากที่พวกเขาลองตั้งช่วง IP ที่แตกต่างกันทั้งหมด แทนที่จะสร้างช่วงข้อยกเว้น

ด้านล่างคุณมีคำสั่งสองคำสั่งที่ผู้ใช้คนหนึ่งรันสำเร็จเพื่อแก้ไขข้อขัดแย้งระหว่าง DNS และ Quickbooks:

netsh int ipv4 set dynamicport tcp start=10000 num=1000 netsh int ipv4 set dynamicport udp start=10000 num=1000

หมายเหตุ: ตรวจสอบให้แน่ใจว่าเทอร์มินัลที่คุณรันคำสั่งมีสิทธิ์แอดมิน

หากวิธีนี้ไม่ได้แก้ไขข้อขัดแย้งหรือไม่เกี่ยวข้องกับสถานการณ์ที่คุณเจอ ให้เลื่อนลงไปที่วิธีสุดท้าย

วิธี 3: แก้ไขข้อขัดแย้งพอร์ต IIS

หากคุณเจอปัญหาขณะพยายามคลิกขวารายการเว็บไซต์ภายใน IIS MMC snap-in (การคลิก Start ไม่ทำอะไร) คุณจะต้องใช้ยูทิลิตี้ Netstat.exe เพื่อตรวจสอบว่ากระบวนการอื่นใช้พอร์ต 80 และพอร์ต 443 หรือไม่

ปัญหานี้พบได้บ่อยกับคอมพิวเตอร์ที่รัน Microsoft IIS 6.0 และ 7.0 ตามเอกสาร Microsoft อย่างเป็นทางการ ข้อความข้อผิดพลาดจะปรากฏหากเงื่อนไขต่อไปนี้ใดๆ เหมาะกับสถานการณ์ปัจจุบันของคุณ:

  • รีจิสทรี ListenOnlyList ไม่ได้ตั้งค่าอย่างถูกต้องบนคอมพิวเตอร์ที่รัน IIS
  • กระบวนการอื่นใช้ TCP port (80) หรือ SSL port (443) ที่ IIS ต้องการ

เพื่อแก้ไขปัญหานี้ เราจะต้องใช้ยูทิลิตี้ Netstat.exe เพื่อตรวจสอบว่ากระบวนการอื่นใช้พอร์ตที่ระบุหรือไม่ หากยูทิลิตี้ระบุว่าพอร์ตไม่ได้ถูกใช้ เราจะตรวจสอบ subkey ListenOnlyList ว่าตั้งค่าถูกต้องหรือไม่

นี่คือคำแนะนำทีละขั้นตอน:

  1. กด Windows key + R เพื่อเปิดกล่องโต้ตอบ Run พิมพ์ “cmd” และกด Ctrl + Shift + Enter เพื่อเปิด Command Prompt ที่มีสิทธิ์สูง เมื่อได้รับแจ้งจาก UAC (User Account Control) ให้คลิก Yes เพื่อให้สิทธิ์แอดมินแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  2. ใน Command Prompt ที่มีสิทธิ์สูง ให้รันคำสั่งต่อไปนี้เพื่อเริ่มยูทิลิตี้ Netstat.exe:
    netstat -ano
  3. เมื่อได้ผลลัพธ์ ให้เลื่อนดูรายการ Active Connections และตรวจสอบว่าพอร์ต 50 และ 443 ถูกใช้งานโดยกระบวนการอื่นหรือไม่แก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น

    หมายเหตุ: หากพอร์ตถูกใช้งานโดยกระบวนการอื่น คุณเพิ่งระบุแหล่งที่มาของปัญหา ในกรณีนี้ ให้ค้นหาออนไลน์ขั้นตอนเฉพาะในการแก้ไขข้อขัดแย้งพอร์ตตาม PID ของพอร์ต

  4. ปิด Command Prompt ที่มีสิทธิ์สูง เนื่องจากเราจะไม่ต้องการสิทธิ์แอดมินสำหรับขั้นตอนถัดไป
  5. หากพอร์ตไม่ได้ถูกใช้งาน ให้กด Windows key + R เพื่อเปิดกล่องโต้ตอบ Run พิมพ์ ‘regedit’ และกด Enter เพื่อเปิด Registry Editor เมื่อได้รับแจ้งจาก UAC (User account control) ให้คลิก Yes เพื่อให้สิทธิ์แอดมินแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  6. ใน Registry Editor ให้ใช้บานซ้ายเพื่อไปที่ตำแหน่งต่อไปนี้:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList

    หมายเหตุ: หาก subkey ListenOnlyList ไม่มีอยู่ จะไม่จำเป็นต้องสร้าง เพราะที่อยู่ IP 0.0.0.0 จะถูกใช้โดยค่าเริ่มต้น

  7. ก่อนที่คุณจะไปแก้ไข subkey ListenOnlyList คุณจะต้องหยุดบริการ HTTP ที่รัน IIS ดังนั้น ให้วาง Registry Editor ไว้ข้างหลัง เราจะกลับมาที่นี่ในไม่ช้า
  8. ต่อไป กด Windows key + R เพื่อเปิดกล่องโต้ตอบ Run พิมพ์ ‘cmd’ และกด Enter เพื่อเปิดหน้าต่าง Command Prompt อีกอันแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  9. ใน Cmd prompt ให้รันคำสั่งต่อไปนี้และกด Enter เพื่อหยุดบริการ HTTP ที่รับผิดชอบรัน IIS:
    net stop http
  10. เมื่อถามว่าคุณต้องการดำเนินการต่อหรือไม่ ให้พิมพ์ ‘Y’ และกด Enter เพื่อยืนยันการดำเนินการแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  11. เมื่อบริการ HTTP ถูกปิดใช้งานแล้ว ให้ปิดหน้าต่าง Command Prompt และกลับไปที่ Registry Editor
  12. ด้วย subkey ListenOnlyList ที่เลือก ให้ไปที่บานขวาและตรวจสอบว่ามีที่อยู่ IP ที่ถูกต้องหรือไม่ หากคุณพบที่อยู่ IP ที่ไม่ถูกต้อง ให้ลบหรือแก้ไขเพื่อให้สะท้อนรายการที่มีที่อยู่ IP ถูกต้องแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น

    หมายเหตุ: หาก subkey ListenOnlyList มีอยู่ และที่อยู่ 0.0.0.0 ถูกรายการไว้ คุณต้องลบที่อยู่ IP อื่นๆ ทั้งหมด

  13. ปิด Registry Editor และรีสตาร์ทคอมพิวเตอร์
  14. ในการบูทครั้งถัดไป บริการ HTTP ควรเริ่มต้นโดยอัตโนมัติ แต่เพื่อให้แน่ใจ ให้กด Windows key + R เพื่อเปิดกล่องโต้ตอบ Run อีกอัน พิมพ์ “cmd” และกด Enter เพื่อเปิดหน้าต่าง Command Promptแก้ไข: กระบวนการไม่สามารถเข้าถึงไฟล์ได้ เพราะกำลังถูกใช้โดยกระบวนการอื่น
  15. ใน Command Prompt ที่เปิดใหม่ ให้พิมพ์คำสั่งต่อไปนี้เพื่อให้แน่ใจว่าบริการ HTTP เริ่มต้นแล้ว:
    net start http

    หมายเหตุ: หากได้ข้อความว่า “The requested service has been already started” แสดงว่าพร้อมแล้ว

  16. พยายามเริ่มบริการจาก Microsoft Internet Information Services (IIS) Microsoft Management Console (MMC) snap-in คุณควรไม่เจอข้อผิดพลาด ‘process cannot access the file because it is being used by another process’ อีกต่อไป