Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?

Đôi khi, khi bạn cố gắng xóa, đổi tên hoặc di chuyển một tệp trong Windows, bạn có thể thấy thông báo rằng tệp đang bận / bị khóa / được sử dụng bởi một quy trình khác. Thông thường, tên của chương trình giữ tệp mở được hiển thị ngay trong cửa sổ thông báo File Explorer. Để mở khóa tệp, chỉ cần đóng chương trình là đủ. Tuy nhiên, có thể xảy ra trường hợp tệp hoặc thư viện được sử dụng bởi một quy trình hệ thống hoặc không xác định. Sau đó, nó khó hơn để mở khóa nó.

Nhiều ứng dụng mở tệp ở chế độ độc quyền. Đồng thời, tệp bị khóa bởi hệ thống tệp ngăn các hoạt động đầu vào và đầu ra từ các ứng dụng và quy trình khác. Nếu bạn đóng ứng dụng, khóa tệp sẽ được giải phóng.

Thông báo khóa tệp có thể khác. Ví dụ:ảnh chụp màn hình sau đây hiển thị loại tệp và ứng dụng mà nó được liên kết với:

File/Folder in Use. The action can’t be completed because the file is open in another program. Close the folder or file and try again.

Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?

Sau đó, bạn có thể dễ dàng hiểu ứng dụng nào đã khóa tệp và đóng tệp đó.

Tuy nhiên, đôi khi bạn có thể thấy một thông báo thú vị hơn rằng một tệp được sử dụng bởi một quy trình hệ thống Windows hoặc không xác định. Nó có thể là một quy trình Windows hoặc các quy trình khác hoạt động với các đặc quyền của Hệ thống, chẳng hạn như ứng dụng chống vi-rút, tác nhân sao lưu, cơ sở dữ liệu MSSQL, v.v.:

The action can’t be completed because the file is open in SYSTEM.
Close the file and try again.

Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?

Hãy thử tìm hiểu xem chương trình, dịch vụ hoặc quy trình hệ thống Windows nào đang sử dụng tệp, cách mở khóa tệp và liệu nó có thể được phát hành mà không cần đóng quy trình gốc hay không.

Nếu bạn không thể xóa một thư mục trong thư mục mạng chia sẻ, sự cố có thể liên quan đến thumbs.db chứa bộ nhớ cache hình thu nhỏ của các tệp trong thư mục hoặc tệp được mở (khóa) bởi người dùng khác trên máy chủ tệp SMB của bạn.

Cách dễ nhất để mở khóa tệp là kết thúc quá trình đã khóa tệp. Nhưng không phải lúc nào cũng có thể thực hiện được, đặc biệt là trên các máy chủ.

Để tìm quy trình đã khóa tệp, bạn thường nên sử dụng Trình mở khóa dụng cụ. Tôi không sử dụng Unlocker vì nó không cung cấp thông tin chi tiết về quy trình hoặc chuỗi quy trình đã khóa tệp. Bạn cũng không thể mở khóa tệp được quy trình sử dụng - bạn phải hủy hoàn toàn một ứng dụng.

Ngoài ra, nó là một công cụ của bên thứ ba và bạn nên hết sức chú ý khi cài đặt, vì nó gợi ý cài đặt toàn bộ gói chương trình mà bạn không cần.

Khi một tiến trình trong Windows mở một tệp, một bộ mô tả tệp (xử lý) được gán cho luồng đầu vào / đầu ra. Tiến trình và các quy trình con của nó truy cập tệp bằng trình xử lý. Sử dụng Windows API, bạn có thể gửi tín hiệu đến hệ thống tệp của mình để giải phóng quá trình xử lý tệp và mở khóa tệp.

Nếu bạn buộc đóng các tay cầm tệp, điều đó có thể khiến ứng dụng hoặc máy tính của bạn hoạt động không ổn định. Nếu bạn không chắc chắn điều gì có thể xảy ra sau khi đóng tệp xử lý của một ứng dụng, đừng làm điều đó trên máy chủ sản xuất trừ khi bạn đã thử nghiệm trước.

Làm cách nào để mở khóa tệp bằng Process Explorer?

ProcessExplorer là một công cụ miễn phí từ bộ Sysinternals mà bạn có thể tải xuống từ trang web của Microsoft (https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer). Hãy thử tìm quy trình đã khóa tệp và giải phóng tệp bằng cách đặt lại trình xử lý tệp của quy trình.

  1. Bạn không cần cài đặt ProcessExplorer:chỉ cần tải xuống, giải nén và chạy procexp.exe với tư cách quản trị viên;
  2. Chọn Tìm -> Tìm Xử lý hoặc DLL (hoặc nhấn Ctrl-F ); Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?
  3. Chỉ định tên tệp bạn muốn mở khóa và nhấp vào Tìm kiếm ;
  4. Chọn tệp bạn muốn. Quá trình đã mở tệp sẽ được đánh dấu trong cây quy trình. Nhấp chuột phải vào nó và chọn Kill Process Tree để kết thúc quá trình. Tuy nhiên, bạn có thể thử và đóng tệp xử lý mà không cần kết thúc quá trình. Trình xử lý tệp mà bạn tìm kiếm sẽ tự động được đánh dấu trong bảng điều khiển dưới cùng của Process Explorer. Nhấp chuột phải vào tay cầm và chọn Đóng tay cầm . Xác nhận đóng tệp; Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?
Nếu bảng điều khiển dưới cùng với danh sách các xử lý quy trình đang mở không được hiển thị trong Trình khám phá quy trình của bạn, hãy bật tùy chọn Chế độ xem -> Chế độ xem ngăn dưới -> Xử lý.

Vậy là bạn đã đóng tệp xử lý mà không cần kết thúc quy trình mẹ. Sau đó, bạn có thể xóa hoặc đổi tên tệp.

Làm thế nào để Giải phóng một Xử lý Tệp bằng Công cụ Xử lý?

Xử lý là một công cụ dòng lệnh khác từ Sysinternals (bạn có thể tải xuống trên trang web của Microsoft:https://docs.microsoft.com/en-us/sysinternals/downloads/handle). Nó cho phép bạn tìm thấy một quá trình đã khóa tệp của bạn và giải phóng khóa bằng cách giải phóng tay cầm.

  1. Tải xuống và giải nén kho lưu trữ của Xử lý;
  2. Mở dấu nhắc lệnh với tư cách quản trị viên và chạy lệnh sau:handle64.exe > listproc.txt Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?
  3. Lệnh này sẽ lưu danh sách các chốt đang mở vào tệp txt. Bạn có thể hiển thị các chốt cho thư mục mà tệp bạn muốn thay đổi nằm trong:Handle64.exe -a “C:\Program Files\App” hoặc cho quy trình cụ thể:handle64.exe -p excel.exe
  4. Mở listproc.txt trong bất kỳ trình soạn thảo văn bản nào và tìm dòng chứa tên của tệp bị khóa. Sao chép xử lý tệp ID (ở định dạng hex). Sau đó, đi tới phần mà tiến trình sở hữu xử lý được hiển thị và ghi ID của nó. Rất có thể một quá trình chạy dưới dạng hệ thống sẽ có PID 4. Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào? Đối với một số quy trình hệ thống Windows, handle.exe trả về thông báo sau:wininit.exe pid: 732 \<unable to open process> . Có nghĩa là bạn không thể nhận được bất kỳ thông tin nào về các quy trình hệ thống này (ngay cả với tư cách là quản trị viên). Để mở các xử lý tệp bằng các quy trình như vậy, hãy chạy cmd.exe dưới dạng Hệ thống và cố gắng lấy lại danh sách các xử lý.
  5. Sau đó, quay lại dấu nhắc lệnh và đặt lại xử lý tệp bằng HandleID và ProcessID của nó. Lệnh có định dạng sau:handl64e.exe -c HandleID -p ProcessID Ví dụ:handl64e.exe -c 18C -p 18800 Làm thế nào để mở khóa một tệp bị khóa bởi bất kỳ quy trình hoặc hệ thống nào?
  6. Công cụ sẽ nhắc bạn xác nhận việc đóng tệp cho quá trình. Xác nhận nó bằng cách nhấn y -> enter .

Nếu hệ thống phản ứng với việc đóng tệp một cách chính xác, bạn sẽ mở khóa tệp của mình mà không cần kết thúc quá trình hoặc khởi động lại máy chủ / máy tính của bạn.