เมื่อคุณพยายามลบไฟล์หรือโฟลเดอร์ที่กำลังใช้งานโดยกระบวนการ กล่องโต้ตอบ File In Use จะปรากฏขึ้นโดยแสดงชื่อของโปรแกรมที่ล็อคไฟล์ไว้
อย่างไรก็ตาม มีบางกรณีที่กล่องโต้ตอบ "ไฟล์ที่ใช้งานอยู่" ไม่แสดงชื่อของกระบวนการที่มีการล็อกไฟล์ที่คุณกำลังพยายามจะลบ ในบางกรณี ไดอะล็อกจะแสดงว่า “การดำเนินการไม่เสร็จสมบูรณ์เนื่องจากไฟล์เปิดอยู่ใน กระบวนการอื่น“.
![ค้นหาว่ากระบวนการใดล็อคไฟล์ไว้](/f/c33ebd7b892a1c69cb8cbd1609bafc44.png)
สำหรับการตรวจสอบกระบวนการและไฟล์ที่ถูกล็อก Windows Sysinternals Process Explorer อาจเป็นตัวเลือกแรกที่ผู้ใช้ส่วนใหญ่นึกถึง อย่างไรก็ตามมีสอง โซลูชั่นในตัว เพื่อแสดงรายการไฟล์ที่เปิดอยู่ในปัจจุบันพร้อมกับชื่อกระบวนการที่เกี่ยวข้อง
ค้นหาว่ากระบวนการใดล็อกไฟล์โดยใช้:
- การตรวจสอบทรัพยากร (resmon.exe)
- Process Explorer จาก Microsoft Sysinternals
-
จัดการจาก Microsoft Sysinternals
- ค้นหาตัวจัดการไฟล์ผ่านเมนูคลิกขวา
-
เครื่องมือคอนโซลในตัวของ Openfiles.exe
- เปิดใช้งานการติดตามตัวจัดการไฟล์ในเครื่อง
- ดูไฟล์ที่เปิดอยู่และชื่อกระบวนการที่เกี่ยวข้อง
- ยกเลิกการเชื่อมต่อไฟล์ที่เปิดจากโฟลเดอร์ที่แชร์
- 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 Handle: อาร์กิวเมนต์บรรทัดคำสั่ง
การใช้งาน: จัดการ [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [ชื่อ] [-nobanner]
-a | ดัมพ์ข้อมูลการจัดการทั้งหมด |
-l | เพียงแสดงแฮนเดิลของส่วนที่สำรองเพจไฟล์ |
-ค | ปิดแฮนเดิลที่ระบุ (ตีความว่าเป็นเลขฐานสิบหก) คุณต้องระบุกระบวนการตาม PID คำเตือน: การปิดที่จับอาจทำให้แอปพลิเคชันหรือระบบไม่เสถียร |
-y | อย่าขอให้ยืนยันหมายเลขอ้างอิงปิด |
-s | จำนวนการพิมพ์ของที่จับแต่ละประเภทที่เปิดอยู่ |
-ยู | แสดงชื่อผู้ใช้ที่เป็นเจ้าของเมื่อค้นหาหมายเลขอ้างอิง |
-p | Dump จัดการที่เป็นของกระบวนการ (ยอมรับชื่อบางส่วน) |
ชื่อ | ค้นหาที่จับกับวัตถุด้วย |
-nobanner | อย่าแสดงแบนเนอร์เริ่มต้นและข้อความลิขสิทธิ์ |
ไม่มีอาร์กิวเมนต์จะถ่ายโอนข้อมูลอ้างอิงไฟล์ทั้งหมด
เพิ่ม Sysinternals Handle เพื่อคลิกขวาที่เมนู
คุณสามารถเพิ่ม Sysinternals Handle ลงในเมนูคลิกขวาเพื่อให้ไฟล์ค้นหาโปรแกรมที่ล็อกไฟล์ได้อย่างรวดเร็ว เมื่อต้องการเพิ่มลงในเมนูบริบท ให้ทำตามขั้นตอนเหล่านี้:
- ดาวน์โหลด ด้ามจับ จากไซต์ Microsoft Sysinternals
- คัดลอกไฟล์ handle.exe & handle64.exe ไปยังโฟลเดอร์ – เช่น
d:\tools
- คัดลอกโค้ดบรรทัดต่อไปนี้ไปยัง 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 - ดับเบิลคลิก
find_handle.vbs
เพื่อเพิ่มรายการเมนูบริบทในรีจิสทรี คุณจะต้องทำสิ่งนี้เพียงครั้งเดียว แต่ถ้าคุณย้ายสคริปต์ไปยังโฟลเดอร์อื่น คุณจะต้องดับเบิลคลิกอีกครั้งเพื่ออัปเดตเส้นทางในรีจิสทรี - คุณจะเห็น ค้นหาที่จับ ตัวเลือกเมื่อคุณคลิกขวาที่ไฟล์ การคลิกที่สคริปต์จะเป็นการเปิดสคริปต์ซึ่งจะเรียกใช้ handle.exe พร้อมอาร์กิวเมนต์ชื่อไฟล์เพื่อค้นหากระบวนการที่ไฟล์ถูกล็อค
ในการลบ ค้นหาที่จับ รายการเมนูบริบท เริ่มตัวแก้ไขรีจิสทรี (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
- ทวีตมัน!
![อีโซอิก](/f/e21ab1194daa0428d27d48cfeefe4507.png)