it-swarm-vi.tech

Làm thế nào để bạn tìm thấy quá trình đang giữ một tệp đang mở trong Windows?

Một điều làm tôi khó chịu về Windows là lỗi cũ chia sẻ vi phạm lỗi. Thường thì bạn không thể xác định những gì đang giữ nó mở. Thông thường, nó chỉ là một trình soạn thảo hoặc Explorer chỉ trỏ đến một thư mục có liên quan nhưng đôi khi tôi đã phải dùng đến cách khởi động lại máy của mình.

Bất kỳ đề xuất về làm thế nào để tìm ra thủ phạm?

538
cletus

Tôi đã thành công với SysiternalsProcess Explorer . Với điều này, bạn có thể tìm kiếm để tìm quá trình nào mở tệp và bạn có thể sử dụng nó để đóng (các) tay cầm nếu bạn muốn. Tất nhiên, an toàn hơn để đóng toàn bộ quá trình. Thận trọng và phán đoán.

Để tìm một tệp cụ thể, sử dụng tùy chọn menu Find->Find Handle or DLL... Nhập một phần của đường dẫn đến tệp. Danh sách các quy trình sẽ xuất hiện dưới đây.

Nếu bạn thích dòng lệnh, Sysiternals Suite bao gồm công cụ dòng lệnh Xử lý , liệt kê các điều khiển mở. Một vài ví dụ về cách sử dụng nó:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - tìm tất cả các tệp được mở từ ổ E:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question
455
Eddie

Bạn có thể sử dụng Trình theo dõi tài nguyên cho cái này đi kèm tích hợp với Windows 7, 8 và 10.

  1. Mở Giám sát tài nguyên , có thể tìm thấy [.__.]
    • Bằng cách tìm kiếm Trình theo dõi tài nguyên hoặc resmon.exe trong menu bắt đầu, hoặc là
    • Là một nút trên tab Hiệu suất trong Trình quản lý tác vụ
  2. Chuyển đến tab [~ # ~] cpu [~ # ~]
  3. Sử dụng trường tìm kiếm trong phần Xử lý liên kết [.__.]
    • Xem mũi tên màu xanh trong ảnh chụp màn hình bên dưới

Khi bạn đã tìm thấy tay cầm, bạn có thể xác định quy trình bằng cách xem cột Hình ảnh và/hoặc PID.

Sau đó, bạn có thể cố gắng đóng ứng dụng như bình thường hoặc nếu không thể, chỉ cần nhấp chuột phải vào tay cầm và giết quá trình trực tiếp từ đó. Dễ như ăn bánh!

Resource Monitor screenshot

Sao chép từ câu trả lời ban đầu của tôi: https://superuser.com/a/643312/62

195
Svish

Hãy thử lệnh openfiles .

93
John Fouhy

Chỉ cần rất cẩn thận với đóng tay cầm; Nó thậm chí còn nguy hiểm hơn bạn nghĩ, vì xử lý tái chế - nếu bạn đóng tay cầm tệp và chương trình mở một thứ khác, thì tệp xử lý gốc mà bạn đã đóng có thể được sử dụng lại cho "thứ khác". Và bây giờ hãy đoán xem điều gì sẽ xảy ra nếu chương trình tiếp tục, nghĩ rằng nó đang hoạt động trên tệp (có xử lý mà bạn đã đóng), trong khi thực tế thì phần xử lý tệp đó hiện đang trỏ đến một thứ khác.

xem bài của Raymond Chen về chủ đề này

Giả sử một dịch vụ chỉ mục tìm kiếm có một tệp được mở để lập chỉ mục nhưng tạm thời bị kẹt và bạn muốn xóa tệp, do đó, bạn (không chính xác) buộc xử lý đóng. Dịch vụ chỉ mục tìm kiếm mở tệp nhật ký của nó để ghi lại một số thông tin và xử lý tệp bị xóa được tái chế làm tay cầm cho tệp nhật ký. Hoạt động bị kẹt cuối cùng đã hoàn thành và dịch vụ chỉ mục tìm kiếm cuối cùng cũng xoay quanh để đóng xử lý mà nó đã mở, nhưng cuối cùng nó lại vô tình đóng xử lý tệp nhật ký.

Dịch vụ chỉ mục tìm kiếm mở một tệp khác, giả sử một tệp cấu hình để ghi để nó có thể cập nhật một số trạng thái liên tục. Tay cầm cho tệp nhật ký được tái chế làm tay cầm cho tệp cấu hình. Dịch vụ chỉ mục tìm kiếm muốn đăng nhập một số thông tin, vì vậy nó ghi vào tệp nhật ký của nó. Thật không may, xử lý tệp nhật ký đã bị đóng và xử lý được sử dụng lại cho tệp cấu hình của nó. Các thông tin đăng nhập đi vào tập tin cấu hình, làm hỏng nó.

Trong khi đó, một tay cầm khác mà bạn buộc phải đóng lại được sử dụng lại như một tay cầm mutex, được sử dụng để giúp ngăn chặn dữ liệu bị hỏng. Khi xử lý tệp gốc được đóng, xử lý mutex bị đóng và các biện pháp bảo vệ chống tham nhũng dữ liệu bị mất. Dịch vụ càng chạy lâu, các chỉ mục của nó càng bị hỏng. Cuối cùng, ai đó nhận thấy chỉ số đang trả về kết quả không chính xác. Và khi bạn cố gắng khởi động lại dịch vụ, nó không thành công vì các tệp cấu hình của nó đã bị hỏng.

Bạn báo cáo sự cố cho công ty sản xuất dịch vụ chỉ mục tìm kiếm và họ xác định rằng chỉ mục đã bị hỏng, tệp nhật ký đã dừng đăng nhập một cách bí ẩn và tệp cấu hình bị ghi đè lên rác. Một số kỹ thuật viên nghèo được giao nhiệm vụ vô vọng là tìm ra lý do tại sao dịch vụ làm hỏng các chỉ mục và tệp cấu hình của nó, không biết rằng nguồn gốc của tham nhũng là bạn buộc phải xử lý.

83
Mark Sowul

Tôi đã sử dụng Xử lý thành công để tìm các quy trình như vậy trong quá khứ.

29
Greg Hewgill

Lockhunter ( http://lockhunter.com/ ) hoạt động trên hệ thống 32 và 64 bit.

11
Scoregraphic

Chỉ cần làm rõ, điều này có nhiều khả năng là kết quả của việc ứng dụng sai của bên thứ 3 không sử dụng lệnh gọi CreatFile API chính xác hơn là bất cứ điều gì trong chính Windows. Có lẽ đó là kết quả của việc thiết kế CreatFile, nhưng đã xong và chúng tôi không thể quay lại.

Về cơ bản khi mở tệp trong chương trình Windows, bạn có tùy chọn chỉ định cờ cho phép truy cập chung. Nếu bạn không chỉ định cờ, chương trình sẽ truy cập độc quyền tệp.

Bây giờ, nếu Explorer dường như là thủ phạm ở đây, thì đó có thể là trường hợp chỉ ở trên bề mặt và thủ phạm thực sự là thứ cài đặt tiện ích mở rộng Shell mở tất cả các tệp trong một thư mục cho mục đích riêng của nó nhưng cũng vậy gung-ho khi làm như vậy, hoặc sau đó không làm sạch đúng cách. Symantec AV là thứ tôi từng thấy làm điều này trước đây và tôi sẽ không ngạc nhiên nếu các chương trình AV khác cũng bị đổ lỗi. Trình cắm kiểm soát nguồn cũng có thể bị lỗi.

Vì vậy, không thực sự là một câu trả lời, nhưng chỉ là một số lời khuyên để không phải lúc nào cũng đổ lỗi cho Windows về chương trình bên thứ 3 bị viết xấu (điều gì đó cũng có thể xảy ra trên bất kỳ HĐH nào khác có khóa tệp ẩn, nhưng bất kỳ HĐH dựa trên unix nào cũng có quyền truy cập được chia sẻ bởi mặc định).

7
Maximus Minimus

Who Lock Me hoạt động tốt và khiến mọi người thích thú với cái tên đó!

7
Generic Error

Apropose Explorer đang giữ một tệp đang mở: "Khi điều này xảy ra trên một tệp bạn cần xóa, bạn có quyền lựa chọn buộc tay cầm đóng hoặc khởi động lại."

Bạn chỉ có thể kết thúc Explorer.

Nếu đây là việc một lần (Explorer thường không mở tệp này) thì tôi đoán việc đăng xuất và đăng nhập lại sẽ thực hiện thủ thuật.

Nếu không, hãy giết tiến trình Explorer trên máy tính để bàn và làm những gì bạn muốn trong khi nó biến mất. Trước tiên hãy bắt đầu một bản sao của cmd.exe (bạn cần có UI để thực hiện việc dọn dẹp dự định của mình). Hãy chắc chắn rằng không có Explorers không phải máy tính để bàn đang chạy. Sau đó, giết Explorer cuối cùng với, ví dụ: Trình quản lý tác vụ. Làm những gì bạn muốn trong lệnh Nhắc. Cuối cùng, chạy Explorer từ lệnh Prompt và nó sẽ trở thành máy tính để bàn.

Tôi đoán có thể có một số khó chịu còn sót lại nếu một số chương trình systray không thể đối phó với việc khởi động lại Shell.

6
dave

Trên máy chủ từ xa, khi bạn đang kiểm tra chia sẻ mạng, một thứ đơn giản như bảng điều khiển Quản lý máy tính có thể hiển thị thông tin này và đóng tệp.

6
K. Brian Kelley

Các tệp có thể bị khóa bởi các quy trình cục bộ ( nlocker là công cụ để sử dụng) và bằng cách truy cập tệp đi qua thông qua chia sẻ.

Có một chức năng tích hợp trong Windows cho bạn biết các tệp nào trên máy tính cục bộ được mở/khóa bởi máy tính từ xa (có tệp mở thông qua chia sẻ tệp):

* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"

Ở đó bạn thậm chí có thể đóng các tập tin mạnh mẽ.

5
Dirk Paessler

Với Hacker quy trình bạn có thể xác định quy trình nào đang giữ tệp của mình một cách dễ dàng:

Find Handles or DLLs

4
Ivan Kochurkin

Có NirSoft's Xem tệp đã mở .

4
Christopher Galpin

Các câu trả lời được nêu ở trên bao gồm các tình huống trong đó một quy trình chương trình đang giữ xử lý tệp mở, điều này (may mắn thay) là phần lớn thời gian - tuy nhiên trong một số trường hợp (như đang xảy ra trên hệ thống này vào lúc này), hệ thống tự xử lý tệp mở.

Bạn có thể xác định tình huống này bằng cách làm theo các hướng dẫn để tìm quy trình xử lý tệp với quy trình Explorer ở trên và lưu ý rằng tên quy trình được liệt kê là 'hệ thống' hoặc bằng cách làm theo các hướng dẫn sử dụng trình giám sát tài nguyên và lưu ý rằng không có hình ảnh nào được hiển thị có một tập tin mở trên tập tin bạn quan tâm (Mặc dù rõ ràng có điều gì đó làm như bạn không thể chỉnh sửa/xóa vv tập tin).

Nếu điều đó xảy ra, tùy chọn của bạn (theo như tôi biết) là khởi động lại - hoặc quên làm bất cứ điều gì với tệp đó.

2
Blair

Có một công cụ FILEMON và hiển thị các tệp và xử lý đang mở. Thật khó để theo kịp màn hình của nó nếu bạn xem trực tiếp, nó làm rất nhanh. Nhưng bạn có thể ngăn nó hiển thị trực tiếp và bạn có thể xem tất cả hoạt động mở/ghi tệp. Hiện thuộc sở hữu của Microsoft nhưng ban đầu là Sysiternals

0
user44304

Tôi đã được bật lên Trình quản lý tác vụ mở rộng cách đây một thời gian bởi blog của Jeremy Zawodny và thật tuyệt khi theo dõi thêm thông tin về các quy trình. +1 cho Process Explorer như trên, đặc biệt là để tiêu diệt các tiến trình mà Trình quản lý tác vụ tiêu chuẩn sẽ không kết thúc.

0
nedm