解决删除文件/文件夹时提示 "文件夹正在使用" / "操作无法完成,因为其中的文件夹或文件已在另一程序中打开" 的问题。
- 精准检测:基于微软官方 Restart Manager API,无需管理员权限即可检测哪些进程正在占用目标文件/文件夹
- 双重检测引擎:
- Restart Manager API — 检测文件被哪个进程打开
- 底层 PEB 进程工作目录枚举 — 通过
NtQueryInformationProcess+ReadProcessMemory读取每个进程的真实当前工作目录(CWD),捕获"文件夹作为工作目录"的占用场景
- 图形界面:直观展示占用进程的 PID、名称、类型、状态、可执行路径
- 一键解决:
- 结束占用进程(支持批量、结束进程树)
- 结束进程并删除目标
- 强制删除(多种删除方式自动尝试)
- 重启后删除(针对顽固占用,注册系统重启时自动删除)
- 进程定位:双击进程行即可在资源管理器中定位其可执行文件
- 命令行模式:支持脚本化调用
- 零依赖:仅使用 Python 标准库和 Windows 内置 API
- Windows 7 / 8 / 10 / 11
- EXE 版本:无需安装 Python,直接运行
- 源码版本:Python 3.8 或更高版本
直接双击 文件占用检测工具.exe 即可打开图形界面。
需要管理员权限时(结束系统进程、重启后删除),请右键
文件占用检测工具.exe→ 以管理员身份运行。
操作流程:
- 在顶部输入框中输入要检测的文件/文件夹路径,或点击"浏览文件/文件夹"选择
- 点击"检测占用"按钮
- 查看下方列表中的占用进程
- 根据需要选择操作:
- 结束选中进程:仅结束进程,不删除文件
- 结束进程并删除:结束进程后立即删除目标文件/文件夹
- 打开进程位置:在资源管理器中定位进程的 exe 文件
- 强制删除目标:不结束进程,直接尝试多种方式删除
- 重启后删除:注册为系统重启时自动删除(需管理员权限)
# 仅检测
文件占用检测工具.exe "E:\test\locked.txt"
# 检测并结束所有占用进程
文件占用检测工具.exe -k "E:\test\folder"
# 检测、结束进程并删除
文件占用检测工具.exe -d "E:\test\folder"
# 查看帮助
文件占用检测工具.exe -h双击 启动.bat 启动图形界面,或命令行运行:
python file_lock_detector.py "E:\test\folder"
python file_lock_detector.py -d "E:\test\folder"Restart Manager 是 Windows Vista 引入的官方 API,用于安装程序在更新文件前检测并关闭占用文件的进程。本工具利用该 API 的 RmGetList 函数查询占用指定文件/文件夹的进程列表,具有以下优势:
- 无需管理员权限即可完成检测
- 微软官方支持,结果准确可靠
- 能识别进程类型(普通应用、服务、资源管理器、控制台程序、关键系统进程)
当文件夹被某个进程作为**当前工作目录(CWD)**时,Restart Manager 可能无法检测到(甚至因权限问题返回错误码 5)。本工具通过以下步骤枚举每个进程的真实 CWD:
CreateToolhelp32Snapshot枚举所有进程OpenProcess打开进程(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ)NtQueryInformationProcess获取进程 PEB 基地址ReadProcessMemory读取 PEB →ProcessParameters→CurrentDirectory(UNICODE_STRING)- 匹配目标路径,精确定位以该文件夹为工作目录的进程
删除时按以下顺序尝试:
- Python 标准库
os.remove/shutil.rmtree - Windows 命令行
del /f /q/rmdir /s /q - 注册
MoveFileEx(MOVEFILE_DELAY_UNTIL_REBOOT)重启后删除
Q: 检测不到占用进程但文件仍无法删除? A: 可能是内核级驱动或杀毒软件占用。尝试使用"重启后删除"功能,或进入安全模式删除。
Q: Restart Manager 返回错误码 5(访问被拒绝)? A: 这是正常现象——文件夹内可能有需要管理员权限的文件。此时工具会自动降级到底层 CWD 枚举,仍能检测到以该文件夹为工作目录的进程。如需完整检测,请以管理员身份运行。
Q: 结束进程时提示权限不足? A: 请以管理员身份运行。系统关键进程(如 lsass、csrss)无法被结束,这是 Windows 的保护机制。
Q: 资源管理器(explorer.exe)占用了文件夹?
A: 这是最常见的情况——可能是某个资源管理器窗口正打开该文件夹,或预览窗格正在预览文件。结束 explorer.exe 后任务栏会暂时消失,可通过任务管理器(Ctrl+Shift+Esc)→ 文件 → 运行新任务 → 输入 explorer 恢复。
Q: 可以检测网络驱动器(NAS/共享文件夹)的占用吗? A: Restart Manager 仅支持本地文件系统。网络驱动器的占用由远端系统管理,无法通过本工具检测。
| 文件 | 说明 |
|---|---|
文件占用检测工具.exe |
可执行程序(单文件,无需 Python,推荐使用) |
file_lock_detector.py |
源代码(核心逻辑 + GUI + CLI) |
启动.bat |
源码模式普通启动脚本 |
管理员启动.bat |
源码模式管理员启动脚本(自动请求 UAC 提升) |
README.md |
本说明文件 |
本工具仅使用 Python 标准库和 Windows 内置 API,可自由使用和修改。