Làm cách nào để mở khóa 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 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úp mở tệp được hiển thị ngay trong cửa sổ thông báo của 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ó mở khóa hơn.
Nhiều ứng dụng mở tệp ở chế độ độc quyền. Đồng thời, tệp bị khóa bởi một hệ thống tệp ngăn các hoạt động đầu vào-đầ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 được liên kết với tệp:
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.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. Đó 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.Hãy thử tìm hiểu 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 tệp 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 thư mục trong thư mục mạng được chia sẻ, sự cố có thể liên quan đến thumbs.db chứa bộ nhớ đệm 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ể, đặc biệt là trên các máy chủ.
Để tìm một quy trình đã khóa tệp, bạn thường nên sử dụng công cụ Trình mở khóa. 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 sử dụng bởi một quy trình — bạn phải tắt hoàn toàn ứ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 nó, vì nó gợi ý cài đặt cả một gói chương trình mà bạn không cần.
Khi một quá 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. Quá trình và các quá 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 phần xử lý tệp và mở khóa tệp.
Nếu bạn buộc đóng các bộ điều khiển 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 điều gì có thể xảy ra sau khi đóng phần xử lý tệp của ứng dụng, đừng thực hiện việc đó trên máy chủ sản xuất trừ khi bạn đã kiểm tra 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í trong bộ công cụ Sysiternals mà bạn có thể tải xuống từ trang web của Microsoft (https://docs.microsoft.com/en-us/sysiternals/downloads/process-explorer). Hãy thử tìm một quy trình đã khóa tệp và giải phóng tệp bằng cách đặt lại phần xử lý tệp của quy trình.
-
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;
Chọn Tìm -> Tìm Xử lý hoặc DLL (hoặc nhấn
Ctrl-F);
Chỉ định tên tệp bạn muốn mở khóa và nhấp vào Tìm kiếm;
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 bộ điều khiển tệp mà không kết thúc quá trình. Phần xử lý tệp mà bạn tìm kiếm sẽ tự động được đánh dấu trong bảng dưới cùng của Process Explorer. Nhấp chuột phải vào bộ điều khiển và chọn Đóng bộ điều khiển. Xác nhận đóng tệp;
Nếu bảng 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 Process Explorer của bạn, hãy bật tùy chọn Xem -> Chế độ xem ngăn dưới -> Xử lý.
Vì vậy, bạn đã đóng xử lý tệp mà không kết thúc quá trình cha. Sau đó, bạn có thể xóa hoặc đổi tên tệp.
Làm cách nào để phát hành một xử lý tệp bằng công cụ xử lý?
Handle là một công cụ dòng lệnh khác từ Sysiternals (bạn có thể tải xuống công cụ này trên trang web của Microsoft: https://docs.microsoft.com/en-us/sysiternals/downloads/handle). Nó cho phép bạn tìm 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.
-
Tải xuống và giải nén kho lưu trữ Xử lý;
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.txtLệnh này sẽ lưu danh sách các tay cầm đang mở vào tệp txt. Bạn có thể hiển thị các tay cầm cho một 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.exeMở 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 phần xử lý tệp ID (ở định dạng hex). Sau đó đi tới phần hiển thị quy trình sở hữu tay cầm và ghi lại ID của nó. Rất có thể một quy trình chạy dưới dạng hệ thống sẽ có PID 4.
Đố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>. Điều đó 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ả khi là quản trị viên). Để mở các bộ điều khiển 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à thử lấy lại danh sách các bộ điều khiển.
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 ProcessIDVí dụ:
handl64e.exe -c 18C -p 18800Công cụ sẽ nhắc bạn xác nhận đóng tệp cho quy trình. Xác nhận nó bằng cách nhấn
y -> enter
Nếu hệ thống phản ứng đúng với việc đóng tệp, 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 mình.






