#windows-file #windows #locking #file-lock #find #process-file #locksmith

filelocksmith

Detect what processes are locking a file or folder on Windows

5 releases

0.1.4 Sep 27, 2024
0.1.3 Aug 3, 2024
0.1.2 Aug 3, 2024
0.1.1 Aug 3, 2024
0.1.0 Aug 2, 2024

#591 in Development tools

Download history 6/week @ 2024-08-29 11/week @ 2024-09-05 23/week @ 2024-09-12 10/week @ 2024-09-19 207/week @ 2024-09-26 31/week @ 2024-10-03 32/week @ 2024-10-10 94/week @ 2024-10-17 70/week @ 2024-10-24 106/week @ 2024-10-31 152/week @ 2024-11-07 166/week @ 2024-11-14 128/week @ 2024-11-21 200/week @ 2024-11-28 3/week @ 2024-12-05 3/week @ 2024-12-12

337 downloads per month

MIT license

51KB
1K SLoC

C++ 775 SLoC // 0.0% comments Visual Studio Project 214 SLoC Rust 72 SLoC

filelocksmith-rs

Version License Documentation

Reliably find and quit processes that are locking a file or folder on Windows. This is a difficult problem to solve on Windows, as the OS does not provide a built-in or straight-forward way to do this.

Additionally, unlike *nix, files and folders can not be deleted or moved while they are locked by a process.

This library wraps the FileLocksmith module from the Microsoft PowerToys project, which is written in C++.

Further documentation at https://docs.rs/filelocksmith

Installing

[dependencies]
filelocksmith = "0.1"

Usage

use filelocksmith::{find_processes_locking_path, quit_processes, pid_to_process_path};

let path = "C:\\path\\to\\file.txt";
let pids = find_processes_locking_path(path);

// print paths of processes locking the file
for pid in &pids {
   println!("[{}] {:?}", pid, pid_to_process_path(*pid));
}

// quit the processes locking the file
if quit_processes(pids) {
 println!("Processes quit successfully");
}

No runtime deps

~0–300KB