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


515

Một điều làm tôi khó chịu không có hồi kết về Windows là lỗi vi phạm chia sẻ cũ . 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 trình thám hiểm 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?


12
Bạn sẽ nghĩ rằng sau tất cả thời gian này, các anh chàng Windows sẽ cho chúng ta một cách để làm điều này một cách dễ dàng từ bên trong Explorer. Tôi tự hỏi tại sao điều này đã không xảy ra?
Cawflands

6
Tôi thấy rằng Explorer rất thường xuyên là quá trình xử lý sự cố đang giữ một tệp mà không có lý do rõ ràng.
Eddie

Tôi biết điều này không giúp ích gì cho bạn nhiều, nhưng tôi nghĩ rằng tôi đã nhớ rằng đây là một tính năng được lên kế hoạch của phiên bản Windows tiếp theo sau máy chủ vista và 2008. hoặc có thể đó là một điều WinFS. không chắc là tôi đã đọc nó ở đâu ...
Kip

xem câu trả lời của tôi về superuser tại đây , tóm lại OpenedFilesView vẫn hoạt động vào năm 2019
Vijay

Câu trả lời:


440

Tôi đã thành công với Sysiternals Process 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, sẽ an toàn hơn khi đóng toàn bộ quá trình. Thận trọng và phán đoán.

Để tìm một tệp cụ thể, hãy 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, bộ Sysiternals 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

17
Bạn có thể đóng tay cầm, nhưng hãy nhớ rằng, bạn đang kéo tấm thảm ra khỏi ứng dụng, kết quả sẽ không thể đoán trước được.
WaldenL

12
@Walden: Hoàn toàn đúng. YMMV. Với WinXP, tôi đã nhiều lần yêu cầu Explorer mở một tay cầm mà không có lý do rõ ràng và từ chối đóng nó. Khi điều này xảy ra trên một tập tin bạn cần xóa, bạn có quyền lựa chọn buộc xử lý đóng hoặc khởi động lại. Cho đến nay, đã làm điều này hàng chục lần, tôi đã không bị ảnh hưởng xấu. Như với bất kỳ công cụ tiên tiến, sử dụng thận trọng và phán đoán.
Eddie

5
Đóng tay cầm có thể khiến ứng dụng sử dụng lại tay cầm trên một tệp khác, gây ra tham nhũng - xem câu trả lời của Jeff bên dưới: serverfault.com/a/15695/79266 ... an toàn hơn nhiều khi giết ứng dụng đang mở tệp, nếu bạn không muốn khởi động lại.
RichVel

14
Đối với explorer, btw, giữ ctrl-shift và nhấp chuột phải vào vùng trống của menu bắt đầu và bạn sẽ nhận được "Thoát Explorer" - ps, không hoàn toàn là câu trả lời của Jeff ..
Mark Sowul

2
Nó không giúp ích cho tập tin không điều hành ig một tập tin văn bản. Tôi cần biết ai đang ghi vào một tệp nhật ký. Ý tưởng nào không?
Xaqron

183

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

  1. Giám sát tài nguyên mở , có thể được tìm thấy
    • Bằng cách tìm kiếm Resource Monitor hoặc resmon.exe trong menu bắt đầu, hoặc
    • Là một nút trên tab Hiệu suất trong Trình quản lý tác vụ của bạn
  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!

Ảnh chụp màn hình tài nguyên

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


2
Điều đáng chú ý là khó có thể tìm thấy chương trình này trên Windows 8 - một tìm kiếm cho 'resmon.exe' sẽ tìm thấy nó.
Kylotan

4
@Kylotan, Ngừng lãng phí thời gian tìm kiếm. Chỉ cần chạy resmon trực tiếp từ cmd
Pacerier

1
@Pacerier: Đẹp đấy. Tôi không quen với những thứ nằm trong đường dẫn Windows.
Kylotan

Điều này phù hợp với tôi hơn 'Xử lý | Các lựa chọn thay thế FindStr 'và' Unlocker ', mặc dù chúng cũng hiệu quả
Marcus Vinicius Pompeu

4
Vẫn hợp lệ trong Windows 10 và có thể được tìm thấy bằng cách sử dụng nút "Open Resource Monitor" bên trong Trình quản lý tác vụ -> tab Hiệu suất.
Norman Breau

92

Hãy thử lệnh openfiles .


10
+1 cho lệnh dựng sẵn, mặc dù cá nhân tôi sử dụng ProcessExplorer trong phần lớn thời gian này.
RBerteig

Thực sự hữu ích.
marko

7
LRI: Hệ thống đích phải chạy HĐH 32 bit.
Bozojoe

4
không hoạt động cho hệ điều hành 64!

12
Điều này có vẻ hoạt động cho Windows 2012R2 64bit, nhưng bạn cần kích hoạt dịch vụ "theo dõi cục bộ mở" bằng cách chạy openfiles /local onvà khởi động lại. Điều này làm cho tính năng này không hữu ích lắm.
Guss

82

Chỉ cần rất cẩn thận với đóng tay cầm; Điều đó thậm chí còn nguy hiểm hơn bạn nghĩ, vì xử lý tái chế - nếu bạn đóng xử lý tệp và chương trình mở một thứ khác, xử lý tệp 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 viết 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 bị đó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ý.


12
cảnh báo quan trọng, điều này sẽ đến gần đầu - khởi động lại có lẽ tốt hơn một tập tin bị hỏng âm thầm.
RichVel

6
+1 Điều này chắc chắn sẽ khiến tôi suy nghĩ hai lần về việc buộc các tay cầm đóng lại! Có vẻ lạ đối với tôi rằng Windows sẽ ngay lập tức sử dụng lại số lượng tay cầm đóng, thay vì tiếp tục tăng số lượng và chỉ quấn quanh khi cần thiết. Điều đó ít nhất sẽ làm giảm đáng kể khả năng xảy ra vấn đề này.
EM0

1
@RichVel Chấm dứt quá trình thủ phạm có lẽ tốt hơn là khởi động lại hoàn toàn.
Dmitry Grigoryev

@DmitryGrigoryev - điểm tốt, và trên thực tế tôi đã đề cập đến điều đó ở đây
RichVel

2
Đây là một cảnh báo rất quan trọng, nhưng không trả lời câu hỏi Làm thế nào để bạn tìm thấy quá trình đang giữ một tệp đang mở trong Windows?
Ploni

29

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


3
Tôi sử dụng công cụ này tất cả các thời gian. Nếu tôi không thể đẩy ổ USB, tôi chỉ cần gõ "xử lý H:" (hoặc bất kỳ ký tự ổ đĩa nào). Tốt nhất của tất cả, bạn có thể sử dụng nó để buộc xử lý chặt chẽ.
Chris Thompson



7

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 API CreatFile 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. Các plugin 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ề những gì có thể là một chương trình bên thứ 3 được 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).


1
Tôi sẽ không đổ lỗi cho ứng dụng bên thứ 3 về việc windows explorer của tôi luôn khóa các tệp Thumbs.db trong thư mục làm việc của nó, nhưng không phải lúc nào cũng mở khóa nó khi tôi chuyển thư mục làm việc. Ít nhất là chúng được mở khóa khi tôi đóng cửa sổ, tôi không phải giết TẤT CẢ các nhà thám hiểm ...
Alexander

@Darth, Bạn có phải là nhà tiếp thị từ Microsoft?
Pacerier

6

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.


Chính xác, tại sao có câu trả lời phức tạp như vậy?
Rohit Gupta

6

Apropose Explorer 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 dấu nhắc lệnh. Cuối cùng, chạy Explorer từ dấu nhắc lệnh 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ể xử lý việc khởi động lại vỏ.


1
Điều này an toàn hơn nhiều so với việc đóng tay cầm và ít gây gián đoạn hơn so với khởi động lại. Cũng áp dụng cho các chương trình khác - Tôi thường thấy chương trình Microsoft Office giữ khóa trên các tệp ngay cả khi tôi đã đóng chúng.
RichVel

5

Các tệp có thể bị khóa bởi các quy trình cục bộ ( công cụ mở khóa 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ẽ.




2

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 trình thám hiểm quy trình ở 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 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 đó.


0

Tôi đã được bật lên Trình quản lý tác vụ mở rộng một lúc trước 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

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


1
Phiên bản cập nhật của điều này là quá trình theo dõi. Bạn có thể lấy nó ở đây: http://technet.microsoft.com/en-us/sysiternals/bb896645
yitwail
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.