Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cách mở khóa file bị khóa bởi bất kỳ tiến trình hoặc SYSTEM nào

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

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

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

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.

Khi đó bạn dễ dàng hiểu ứng dụng nào khóa file và đóng nó.

Tuy nhiên, đôi khi bạn có thể thấy thông báo thú vị hơn rằng file được dùng bởi tiến trình Windows không xác định hoặc hệ thống. Nó có thể là tiến trình Windows hoặc các tiến trình khác làm việc với đặc quyền System, như ứng dụng antivirus, agent backup, database 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 ra chương trình, dịch vụ hoặc tiến trình hệ thống Windows nào đang dùng file, cách mở khóa file và xem nó có thể được giải phóng mà không đóng tiến trình cha hay không.

Nếu bạn không thể xóa thư mục trong thư mục chia sẻ mạng, vấn đề có thể liên quan đến thumbs.db chứa bộ nhớ đệm thu nhỏ của file trong thư mục hoặc file bị mở (khóa) bởi người dùng khác trên server file SMB của bạn.

Cách dễ nhất để mở khóa file là kết thúc tiến trình đã khóa nó. Nhưng không phải lúc nào cũng khả thi, đặc biệt trên server.

Để tìm tiến trình khóa file, thường khuyên dùng công cụ Unlocker. Tôi không dùng Unlocker vì nó không cung cấp thông tin chi tiết về tiến trình hoặc chuỗi tiến trình khóa file. Cũng không thể mở khóa file được dùng bởi tiến trình – bạn phải kill hoàn toàn ứng dụng.

Cũng là công cụ bên thứ ba, và bạn phải rất chú ý khi cài đặt, vì nó gợi ý cài một gói chương trình bạn không cần.

Khi một tiến trình trong Windows mở file, một file descriptor (handle) được gán cho luồng input/output. Tiến trình và tiến trình con của nó truy cập file bằng handler. Sử dụng Windows API, bạn có thể gửi tín hiệu đến hệ thống tệp để giải phóng handle file và mở khóa file.

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

Cách mở khóa file bằng Process Explorer?

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

  1. Bạn không cần cài đặt ProcessExplorer: chỉ tải, giải nén và chạy procexp.exe với quyền administrator;
  2. Chọn Find -> Find Handle or DLL (hoặc nhấn Ctrl-F);
  3. Chỉ định tên file bạn muốn mở khóa và nhấn Search;
  4. Chọn file bạn muốn. Tiến trình đã mở file sẽ được highlight trong cây tiến trình. Chuột phải và chọn Kill Process Tree để kết thúc tiến trình. Tuy nhiên, bạn có thể thử đóng handle file mà không kết thúc tiến trình. Handle file bạn tìm được được highlight tự động trong bảng dưới của Process Explorer. Chuột phải handle và chọn Close handle. Xác nhận đóng file.

Nếu bảng dưới với danh sách handle tiến trình mở không hiển thị trong Process Explorer của bạn, bật tùy chọn View -> Lower Pane View -> Handles.

Vậy bạn đã đóng handle file mà không kết thúc tiến trình cha. Sau đó bạn có thể xóa hoặc đổi tên file.

Cách giải phóng Handle file bằng công cụ Handle?

Handle là công cụ dòng lệnh khác từ Sysinternals (bạn có thể tải trên trang web Microsoft: https://docs.microsoft.com/en-us/sysinternals/downloads/handle). Nó cho phép tìm tiến trình khóa file của bạn và giải phóng khóa bằng cách giải phóng handle.

  1. Tải và giải nén archive Handle;
  2. Mở command prompt với quyền administrator và chạy lệnh: handle64.exe > listproc.txt
  3. Lệnh này sẽ lưu danh sách handle mở vào file txt. Bạn có thể hiển thị handle cho thư mục chứa file bạn muốn thay đổi: Handle64.exe -a "C:\Program Files\App" hoặc cho tiến 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 file bị khóa. Sao chép ID handle file (định dạng hex). Sau đó đi lên phần nơi tiến trình sở hữu handle được hiển thị và ghi lại ID của nó. Rất có thể tiến trình chạy dưới System sẽ có PID 4. Đối với một số tiến trình hệ thống Windows, handle.exe trả về thông báo: wininit.exe pid: 732 \<unable to open process>. Nghĩa là bạn không thể lấy thông tin về các tiến trình hệ thống này (dù là administrator). Để lấy handle file mở bởi các tiến trình này, chạy cmd.exe với quyền System và thử lấy danh sách handle lại.
  5. Quay lại command prompt và reset handle file bằng HandleID và ProcessID. Lệnh có dạng: handl64e.exe -c HandleID -p ProcessID Ví dụ: handl64e.exe -c 18C -p 18800
  6. Công cụ sẽ nhắc bạn xác nhận đóng file cho tiến trình. Xác nhận bằng cách nhấn y -> enter.

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