วิธีการระบุกระบวนการที่ล็อคไฟล์ใน Windows

click fraud protection

เมื่อคุณพยายามลบไฟล์หรือโฟลเดอร์ที่กำลังใช้งานโดยกระบวนการ กล่องโต้ตอบ File In Use จะปรากฏขึ้นโดยแสดงชื่อของโปรแกรมที่ล็อคไฟล์ไว้

อย่างไรก็ตาม มีบางกรณีที่กล่องโต้ตอบ "ไฟล์ที่ใช้งานอยู่" ไม่แสดงชื่อของกระบวนการที่มีการล็อกไฟล์ที่คุณกำลังพยายามจะลบ ในบางกรณี ไดอะล็อกจะแสดงว่า “การดำเนินการไม่เสร็จสมบูรณ์เนื่องจากไฟล์เปิดอยู่ใน กระบวนการอื่น“.

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

สำหรับการตรวจสอบกระบวนการและไฟล์ที่ถูกล็อก Windows Sysinternals Process Explorer อาจเป็นตัวเลือกแรกที่ผู้ใช้ส่วนใหญ่นึกถึง อย่างไรก็ตามมีสอง โซลูชั่นในตัว เพื่อแสดงรายการไฟล์ที่เปิดอยู่ในปัจจุบันพร้อมกับชื่อกระบวนการที่เกี่ยวข้อง

ค้นหาว่ากระบวนการใดล็อกไฟล์โดยใช้:

  1. การตรวจสอบทรัพยากร (resmon.exe)
  2. Process Explorer จาก Microsoft Sysinternals
  3. จัดการจาก Microsoft Sysinternals
    • ค้นหาตัวจัดการไฟล์ผ่านเมนูคลิกขวา
  4. เครื่องมือคอนโซลในตัวของ Openfiles.exe
    • เปิดใช้งานการติดตามตัวจัดการไฟล์ในเครื่อง
    • ดูไฟล์ที่เปิดอยู่และชื่อกระบวนการที่เกี่ยวข้อง
    • ยกเลิกการเชื่อมต่อไฟล์ที่เปิดจากโฟลเดอร์ที่แชร์
  5. OpenedFilesView จาก Nirsoft.net (บุคคลที่สาม)

1. การตรวจสอบทรัพยากร

Resource Monitor (resmon.exe) เป็นเครื่องมือในตัวที่มีคุณสมบัติที่มีประโยชน์มากมาย ด้วยการตรวจสอบทรัพยากร คุณสามารถ

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

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

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

เราได้กล่าวถึงการตรวจสอบทรัพยากรก่อนหน้านี้ ตรวจสอบบทความเหล่านี้:

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

2. Process Explorer

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

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

จากมุมมองบานหน้าต่างด้านล่าง คุณสามารถปิดตัวจัดการไฟล์ได้ ถ้าจำเป็น

คุณต้องเรียกใช้ Process Explorer ในฐานะผู้ดูแลระบบเพื่อจัดการกระบวนการที่ทำงานอยู่ในระดับสูง หากต้องการยกระดับ Process Explorer ให้คลิกเมนูไฟล์ → แสดงรายละเอียดสำหรับกระบวนการทั้งหมด.

ตรวจสอบบทความที่เกี่ยวข้องกับ Process Explorer เหล่านี้:

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

3. จัดการจาก Windows Sysinternals

ด้ามจับ เป็นโปรแกรมอรรถประโยชน์จาก Microsoft Sysinternals ที่แสดงข้อมูลเกี่ยวกับ open handle สำหรับกระบวนการใดๆ ในระบบ คุณสามารถใช้เพื่อดูโปรแกรมที่เปิดไฟล์อยู่ หรือเพื่อดูประเภทอ็อบเจ็กต์และชื่อแฮนเดิลทั้งหมดของโปรแกรม Handle เหมือนกับเวอร์ชันบรรทัดคำสั่งของ Process Explorer.

บันทึก: แฮนเดิล v4.21 มี แมลงตัวเล็ก โดยจะรายงานเสมอว่า "ไม่พบจุดจับที่ตรงกัน" หากอักษรระบุไดรฟ์เป็นตัวพิมพ์ใหญ่ หวังว่า Microsoft จะแก้ไขได้ในการอัพเดทครั้งต่อไป

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

handle.exe -a -u ชื่อไฟล์_with_path

หากชื่อไฟล์มีช่องว่าง ให้ใส่เครื่องหมายคำพูดคู่

ตัวอย่าง:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
ค้นหาไฟล์ที่ล็อกกระบวนการ - sysinternals จัดการ

(การกล่าวถึงชื่อไฟล์โดยไม่มีเส้นทางอาจไม่จำเป็นในทุกสถานการณ์ ขอแนะนำให้ใส่เส้นทางแบบเต็มเสมอ)

ผลลัพธ์แสดงชื่อกระบวนการ ตัวระบุกระบวนการ ชื่อผู้ใช้ ชื่อไฟล์ที่ถูกล็อก (เป้าหมาย) พร้อมพาธ

Sysinternals Handle: อาร์กิวเมนต์บรรทัดคำสั่ง

การใช้งาน: จัดการ [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [ชื่อ] [-nobanner]
-a ดัมพ์ข้อมูลการจัดการทั้งหมด
-l เพียงแสดงแฮนเดิลของส่วนที่สำรองเพจไฟล์
-ค ปิดแฮนเดิลที่ระบุ (ตีความว่าเป็นเลขฐานสิบหก)
คุณต้องระบุกระบวนการตาม PID คำเตือน: การปิดที่จับอาจทำให้แอปพลิเคชันหรือระบบไม่เสถียร
-y อย่าขอให้ยืนยันหมายเลขอ้างอิงปิด
-s จำนวนการพิมพ์ของที่จับแต่ละประเภทที่เปิดอยู่
-ยู แสดงชื่อผู้ใช้ที่เป็นเจ้าของเมื่อค้นหาหมายเลขอ้างอิง
-p Dump จัดการที่เป็นของกระบวนการ (ยอมรับชื่อบางส่วน)
ชื่อ ค้นหาที่จับกับวัตถุด้วย (รับชิ้นส่วน)
-nobanner อย่าแสดงแบนเนอร์เริ่มต้นและข้อความลิขสิทธิ์

ไม่มีอาร์กิวเมนต์จะถ่ายโอนข้อมูลอ้างอิงไฟล์ทั้งหมด

เพิ่ม Sysinternals Handle เพื่อคลิกขวาที่เมนู

คุณสามารถเพิ่ม Sysinternals Handle ลงในเมนูคลิกขวาเพื่อให้ไฟล์ค้นหาโปรแกรมที่ล็อกไฟล์ได้อย่างรวดเร็ว เมื่อต้องการเพิ่มลงในเมนูบริบท ให้ทำตามขั้นตอนเหล่านี้:

  1. ดาวน์โหลด ด้ามจับ จากไซต์ Microsoft Sysinternals
  2. คัดลอกไฟล์ handle.exe & handle64.exe ไปยังโฟลเดอร์ – เช่น d:\tools
  3. คัดลอกโค้ดบรรทัดต่อไปนี้ไปยัง Notepad และบันทึกไฟล์เป็น find_handle.vbs ไปยังสถานที่ถาวร
    'เรียกใช้ยูทิลิตี้ Sysinternals Handle.exe พร้อมอาร์กิวเมนต์ชื่อไฟล์ '© ราเมซ ศรีนิวาสัน -- https://winhelponline.com/blog. 'วันที่สร้าง: 29 มี.ค. 2551 'วันที่ปรับปรุง: 11 มิ.ย. 2019 'สำหรับ Windows ทุกรุ่น รวมถึง Windows 10 Option Explicit หรี่ objShell, WshShell, objFSO, sBaseKey, sFilename ตั้งค่า objShell = CreateObject ("Shell. แอปพลิเคชัน") ตั้งค่า WshShell = CreateObject ("WScript. เปลือก") ตั้งค่า objFSO = CreateObject("Scripting. FileSystemObject") ถ้า WScript. ข้อโต้แย้ง Count = 0 จากนั้น sBaseKey = "HKCU\Software\Classes\*\shell\" WshShell. RegWrite sBaseKey & "FindHandle\", "Find Handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle\command", "wscript.exe" & & _ WScript. ScriptFullName & & " " & & "%1" &, "REG_SZ" อื่น ถ้า objFSO.FileExists (WScript. อาร์กิวเมนต์ (0)) = True จากนั้น sFilename = lcase (WScript. อาร์กิวเมนต์ (0)) objShell ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If จบถ้า

    บันทึก: เส้นทาง Sysinternals Handle.exe มีฮาร์ดโค้ดเป็น d:\tools\handle.exe ในสคริปต์ข้างต้น หากโปรแกรมอยู่บนพาธอื่น ให้แก้ไขพาธในสคริปต์ตามนั้น สำหรับ Windows 64 บิต คุณสามารถใช้อย่างใดอย่างหนึ่ง handle.exe หรือ handle64.exe

  4. ดับเบิลคลิก find_handle.vbs เพื่อเพิ่มรายการเมนูบริบทในรีจิสทรี คุณจะต้องทำสิ่งนี้เพียงครั้งเดียว แต่ถ้าคุณย้ายสคริปต์ไปยังโฟลเดอร์อื่น คุณจะต้องดับเบิลคลิกอีกครั้งเพื่ออัปเดตเส้นทางในรีจิสทรี
  5. คุณจะเห็น ค้นหาที่จับ ตัวเลือกเมื่อคุณคลิกขวาที่ไฟล์ การคลิกที่สคริปต์จะเป็นการเปิดสคริปต์ซึ่งจะเรียกใช้ handle.exe พร้อมอาร์กิวเมนต์ชื่อไฟล์เพื่อค้นหากระบวนการที่ไฟล์ถูกล็อคค้นหาไฟล์ที่ล็อกกระบวนการ - sysinternals จัดการ

ในการลบ ค้นหาที่จับ รายการเมนูบริบท เริ่มตัวแก้ไขรีจิสทรี (regedit.exe) และลบคีย์ต่อไปนี้:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — เครื่องมือคอนโซลในตัว

เครื่องมือในตัวอีกตัวที่เราจะใช้คือ Openfiles.exe ซึ่งเป็นเครื่องมือคอนโซลที่ไม่ใหม่สำหรับ Windows เปิดตัวครั้งแรกในปี 2000 โดยเป็นส่วนหนึ่งของเครื่องมือ Windows Resource Kit 2000/2003 ยูทิลิตีนี้ถูกรวมไว้โดยค่าเริ่มต้นใน Windows Vista และสูงกว่า (รวมถึง Windows 10) Openfiles แสดงรายการไฟล์ที่เปิดอยู่ในปัจจุบันจากโฟลเดอร์ในเครื่องหรือโฟลเดอร์ที่ใช้ร่วมกัน พร้อมด้วย Handle ID และชื่อเรียกทำงานของ Process เครื่องมือนี้ยังช่วยให้คุณสามารถยกเลิกการเชื่อมต่อไฟล์อย่างน้อยหนึ่งไฟล์ที่เปิดจากระยะไกลจากโฟลเดอร์ที่ใช้ร่วมกัน

เปิดใช้งาน "รักษารายการออบเจกต์" แฟล็กโกลบอลเป็นครั้งแรก

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

openfiles /local on

คุณจะเห็นข้อความต่อไปนี้:

ข้อมูล: สถานะส่วนกลางของระบบ 'รักษารายการวัตถุ' ถูกเปิดใช้งานอยู่ในขณะนี้

คุณจะต้องเรียกใช้คำสั่งนี้ในครั้งแรกเท่านั้น จากนั้นรีสตาร์ท Windows เพื่อให้การเปลี่ยนแปลงมีผล

ดูไฟล์ที่เปิดอยู่และชื่อกระบวนการที่เกี่ยวข้อง

หลังจากรีสตาร์ท Windows จาก an ผู้ดูแลระบบ พร้อมรับคำสั่ง หน้าต่าง ชนิด:

openfiles

รายการนี้แสดงรายการ File/Handle ID ชื่อกระบวนการ และรายการไฟล์ที่เปิดในเครื่องหรือเปิดจากระยะไกลผ่านจุดแชร์ในเครื่อง ในรูปแบบตาราง

หากต้องการดูผลลัพธ์ในรูปแบบรายการหรือ CSV ให้ใช้พารามิเตอร์ /query

openfiles /query /FO LIST openfiles /query /FO CSV

ในการคัดลอกเอาต์พุตไปยังคลิปบอร์ด ให้ไพพ์เอาต์พุตไปที่ Clip.exe ดังนี้ จากนั้นวางผลลัพธ์ใน Notepad หรือโปรแกรมแก้ไขอื่น ๆ ที่คุณเลือก

openfiles |คลิป
ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้
openfiles /query /FO LIST |คลิป. openfiles /query /FO CSV |clip
ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการคัดลอกเอาต์พุตพร้อมรับคำสั่งไปยังคลิปบอร์ดหรือบันทึกเอาต์พุตไปยังไฟล์ โปรดดูบทความ วิธีคัดลอกข้อความเอาต์พุตพร้อมรับคำสั่งไปยังคลิปบอร์ดหรือบันทึกลงในไฟล์

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

openfiles | findstr /i 

ตัวอย่าง:

openfiles | findstr /i หอไอเฟล

คำสั่งข้างต้นแสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดที่มีคำว่า "ไอเฟล" ในชื่อไฟล์ ในตัวอย่างนี้ Word 2016 กำลังล็อกไฟล์ "The Eiffel Tower.docx" (ID 4576)

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

และกล่องโต้ตอบ "ไฟล์ที่ใช้งานอยู่" บอกฉันในสิ่งเดียวกัน

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

ตัดการเชื่อมต่อไฟล์ที่เปิดจากระยะไกลจากโฟลเดอร์ที่แชร์

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

OPENFILES / ตัดการเชื่อมต่อ [/ ระบบ S [/ U ชื่อผู้ใช้ [/ P [รหัสผ่าน]]] {[/ ID id] [/A เข้าถึงโดย] [/ O openmode]} [/ OP openfile] คำอธิบาย: ช่วยให้ผู้ดูแลระบบสามารถยกเลิกการเชื่อมต่อไฟล์และโฟลเดอร์ที่เปิดจากระยะไกลผ่านการแชร์ โฟลเดอร์ รายการพารามิเตอร์: ระบบ /S ระบุระบบระยะไกลที่จะเชื่อมต่อ /U [domain\]user ระบุบริบทผู้ใช้ที่คำสั่งควรดำเนินการ /P [รหัสผ่าน] ระบุรหัสผ่านสำหรับบริบทของผู้ใช้ที่กำหนด /ID id ระบุเพื่อยกเลิกการเชื่อมต่อไฟล์ที่เปิดอยู่ด้วย ID ไฟล์ สามารถใช้สัญลักษณ์แทน "*" /A accessedby ระบุเพื่อยกเลิกการเชื่อมต่อไฟล์ที่เปิดอยู่ทั้งหมดด้วยค่า "accessedby" สามารถใช้สัญลักษณ์แทน "*" /O openmode ระบุเพื่อยกเลิกการเชื่อมต่อไฟล์ที่เปิดอยู่ทั้งหมดด้วยค่า "openmode" ค่าที่ถูกต้องคือ อ่าน เขียน หรือ อ่าน/เขียน สามารถใช้สัญลักษณ์แทน "*" /OP openfile ระบุเพื่อยกเลิกการเชื่อมต่อไฟล์ที่เปิดอยู่ทั้งหมดที่สร้างโดยชื่อ "เปิดไฟล์" เฉพาะ สามารถใช้สัญลักษณ์แทน "*" /? แสดงข้อความช่วยเหลือนี้ ตัวอย่าง: OPENFILES / ตัดการเชื่อมต่อ /? OPENFILES / ตัดการเชื่อมต่อ / ID 1 OPENFILES / ตัดการเชื่อมต่อ / ชื่อผู้ใช้ OPENFILES / ตัดการเชื่อมต่อ / O อ่าน / เขียน OPENFILES / ตัดการเชื่อมต่อ / OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Disconnect /S system /U username /ID 5 OPENFILES /Disconnect /S system /U username /Pรหัสผ่าน /ไอดี *

Openfiles.exe ทำหน้าที่แสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดพร้อมกับชื่อกระบวนการได้อย่างสมบูรณ์แบบ แต่ไม่สามารถบังคับฆ่ากระบวนการได้ อย่างไรก็ตาม เครื่องมือคอนโซลในตัวที่ยอดเยี่ยม (แต่ถูกมองข้าม) นี้มีประโยชน์เมื่อคุณต้องการค้นหาชื่อกระบวนการที่ใช้อย่างรวดเร็ว ไฟล์ หรือเพื่อยกเลิกการเชื่อมต่อไฟล์ที่ผู้ใช้เครือข่ายเข้าถึงผ่านโฟลเดอร์ที่ใช้ร่วมกัน — โดยไม่ต้องพึ่งพาบุคคลที่สาม สารละลาย.

5. OpenedFilesView

OpenedFilesView จาก Nirsoft แสดงรายการไฟล์ที่เปิดอยู่ในระบบของคุณ สำหรับแต่ละไฟล์ที่เปิดอยู่ ข้อมูลเพิ่มเติมจะปรากฏขึ้น: ค่าจัดการ การเข้าถึงแบบอ่าน/เขียน/ลบ ตำแหน่งไฟล์ กระบวนการ ที่เปิดไฟล์ และอื่นๆ... นอกจากนี้ คุณยังสามารถปิดไฟล์ที่เปิดอยู่ได้ตั้งแต่หนึ่งไฟล์ขึ้นไป หรือปิดกระบวนการที่เปิดไฟล์เหล่านี้ ไฟล์.

ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้

คุณสามารถปิดกระบวนการของไฟล์ที่เลือกหรือปิดตัวจัดการไฟล์ที่เลือกได้ หมายเลขอ้างอิงจะแสดงเป็นค่าฐานสิบหกในขณะที่เครื่องมือคอนโซล openfiles.exe จะแสดงในรูปแบบปกติ เครื่องมือนี้ยังช่วยให้คุณเพิ่มตัวเลือกเมนูบริบทเพื่อค้นหากระบวนการที่กำลังใช้ไฟล์ได้อย่างรวดเร็วผ่านเมนูคลิกขวา ฉันพิจารณาว่าตัวเลือกเมนูบริบท / รองรับบรรทัดคำสั่งเป็นหนึ่งในคุณสมบัติที่มีประโยชน์ที่สุดที่นำเสนอโดย OpenedFilesView


คำขอเล็กน้อย: หากคุณชอบโพสต์นี้ โปรดแชร์สิ่งนี้

หนึ่งส่วนแบ่ง "เล็กน้อย" จากคุณจะช่วยอย่างมากในการเติบโตของบล็อกนี้ คำแนะนำที่ดีบางประการ:
  • ขามัน!
  • แชร์ไปยังบล็อกที่คุณชื่นชอบ + Facebook, Reddit
  • ทวีตมัน!
ขอบคุณมากสำหรับการสนับสนุนของคุณผู้อ่านของฉัน จะใช้เวลาไม่เกิน 10 วินาที ปุ่มแชร์อยู่ด้านล่าง :)

อีโซอิกรายงานโฆษณานี้