ค้นหากระบวนการที่ล็อกไฟล์โดยไม่ใช้เครื่องมือของบุคคลที่สาม

2019-05-05 13:01:39
หลัก·ไมโครซอฟท์·ค้นหากระบวนการที่ล็อกไฟล์โดยไม่ใช้เครื่องมือของบุคคลที่สาม

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

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

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

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

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

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

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

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

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

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

2. ประมวลผล Explorer

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

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

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

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

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

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

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

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

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

 handle.exe -a -u filename_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ดัมพ์จัดการกับของกระบวนการ (ยอมรับชื่อบางส่วน)
ชื่อค้นหาการจัดการกับวัตถุด้วย (ยอมรับส่วน)
-nobannerอย่าแสดงแบนเนอร์เริ่มต้นและข้อความลิขสิทธิ์

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

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

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

  1. ดาวน์โหลดหมายเลขอ้างอิงจากไซต์ Microsoft Sysinternals
  2. คัดลอกไฟล์ handle.exe & handle64.exe ไปยังโฟลเดอร์ - เช่น d:\tools
  3. คัดลอกบรรทัดของรหัสต่อไปนี้ไปยัง Notepad และบันทึกไฟล์เป็น find_handle.vbs ไปยังตำแหน่งถาวร
     'เรียกใช้โปรแกรมอรรถประโยชน์ Sysinternals Handle.exe ด้วยอาร์กิวเมนต์ชื่อไฟล์ '© Ramesh Srinivasan - https://winhelponline.com/blog' วันที่สร้าง: 29 มี.ค. 2008 'วันที่อัพเดท: 11 มิ.ย. 2019' สำหรับ Windows ทุกรุ่นรวมถึง Windows 10 Option Explicit Dim objShell, WshShell, objFSO, sBaseKey, sFilename Set objShell = CreateObject ("Shell.Application") ตั้งค่า WshShell = CreateObject ("WScript.Shell") ตั้ง objFSO = CreateObject ("Scripting.FileSystemObject") ถ้า WScript.Arguments.Count ซอฟต์แวร์ \ 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.Arguments (0)) = True แล้ว sFilename = lcase (WScript.Arguments (0)) objShell.ShellExecute "cmd.exe", "/kd:\tools\handle.exe -a -u" & _ "", "& sFilename &" ", ", ", " Runas ", 1 End If End If 

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

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

เปิดใช้งานการตั้งค่าสถานะส่วนกลาง "ดูแลรายการวัตถุ" เป็นครั้งแรก

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

 openfiles / local on 

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

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

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

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

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

 openfiles 

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

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

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

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

 openfiles | คลิป 

 openfiles / query / FO LIST | clip openfiles / query / FO CSV | clip 

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

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

 openfiles | findstr / i 

ตัวอย่าง:

 openfiles | findstr / ฉันไอเฟล 

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

และกล่องโต้ตอบ“ File In Use” บอกฉันแบบเดียวกัน

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

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

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

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

5. OpenedFilesView

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

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

ตัวเลือกของบรรณาธิการ