Crate filelocksmith

Source
Expand description

§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++.

§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");
}

Functions§

find_processes_locking_path
Find processes locking a file or folder. Returns a list of process IDs.
is_process_elevated
Returns true if the current process is running as administrator.
pid_to_process_path
Returns the full path of a process given its process ID. If the process is not found, or we do not have permission to access the process, this function will return None.
quit_processes
Quits processes given a list of process IDs. Returns true if all processes were quit successfully, or there were no processes to quit. If one or more processes could not be quit, this function will return false.
set_debug_privilege
Sets the SeDebugPrivilege for the current process. Returns true if successful.