跳到正文
AgileMedic
Esc
本栏目菜单

文件解锁

可用免费功能 · v0.3.0 起可从资源管理器直接拖入 · 打开应用默认就停在这一页

删除、移动、重命名时弹出「操作无法完成,因为文件已在另一个程序中打开」,Windows 不告诉你是哪个程序。把文件拖进 AgileMedic,它用系统自带的 Restart Manager 查出占用的进程,再由你选怎么处理。

一次最多放入50 个文件或文件夹,多了截掉
文件夹展开后512 个文件夹展开的上限
处理办法3 档由轻到重,见下文
用不用 AI不用全部在本机完成

打开方式

  • 主界面左侧导航「文件 → 文件解锁」
  • 全局热键 Ctrl+Alt+U 唤回主窗口(只唤回窗口、不切页面;快捷键不能改,见 快捷键)

首次使用建议先读 第一次解锁文件。

它怎么查出是谁

Restart Manager 是 Windows 为「装更新不必重启」准备的系统组件,它知道哪些进程正持有哪些文件。AgileMedic 每次查询都新开一个会话,按三步走:

  1. RmStartSession 开一个会话。
  2. RmRegisterResources 登记你放进来的路径。文件原样登记;文件夹展开成里面的全部文件(含隐藏和系统文件),最多 512 个,满了就停。
  3. RmGetList 拿回占用进程的列表,再给每个进程补上可执行文件路径,并试一下能不能结束它。

全程只调系统接口,不装驱动,不碰与这些文件无关的进程。查询在主线程里做,文件夹很大时界面可能顿一下,512 的上限就是为这个设的。

它查的是进程,不是句柄

Restart Manager 回答的是「哪些进程占着」。AgileMedic 没有逐个枚举句柄的功能,也做不到「只关掉某个句柄、让进程接着跑」。下面第一档名叫「关闭句柄」,实际是请占用的程序退出。要句柄级排查,用 Sysinternals 的 Handle / Process Explorer。

把文件放进来

面板顶部是一块虚线拖放区,三种方式都行。放进来就自动查询,没有「开始」按钮。

方式效果
拖入从资源管理器把文件或文件夹拖到拖放区,松手即查
左键点拖放区弹出「选择被占用的文件」,可以多选
右键点拖放区弹出「选择被占用的文件夹」,一次选一个
  • 一次最多 50 个:超出的部分截断,操作日志记一条 WARN「文件过多: 请求 N / 允许 50,已截断」。
  • 新的一批替换旧的:再拖一次是重新开始,不是追加。
  • 每个路径一块小标签:点上面的 × 移除这一项,剩下的路径会自动重新查一遍。

没有资源管理器右键菜单

目前不能在资源管理器里右键「用 AgileMedic 解锁」,也不能从命令行传路径进来。入口只有上面三种。

为什么拖放要靠一个叫 drophost 的小程序

AgileMedic 以管理员身份运行,而普通权限的资源管理器不能把文件拖进管理员窗口(Windows 的 UIPI 限制)。所以安装包里另带一个普通权限的 agilemedic-drophost.exe:它是一块透明的窗,正好压在拖放区上,替主程序接住拖放,再经命名管道 agilemedic-drop-v1 把路径传回去。

它由 explorer.exe 代为拉起,这样才不会继承管理员权限。主程序只接受同目录下这个 exe 发来的路径,单条消息上限 256 KB;主程序退出 6 秒后它自己也退出。

看懂占用进程表

查完后表格列出所有占用进程,默认全部勾选。表头写「占用进程 · 2 个 · 已选 2 个」,右侧「全选 / 取消」一键切换。

图 1占用进程表的五列界面示意
占用进程 · 2 个 · 已选 1 个全选 / 取消
12PID3进程4可执行文件5权限
11820Microsoft WordWINWORD.EXE●
1460Search Indexer—需管理员
进程与 PID 是样例。第二行是服务、读不到路径、结束它需要管理员时的样子。手机上表格放不下第 ④ 列「可执行文件」,会把它收起。出处:processtablemodel.cpp。
  1. 复选框:默认全选,只影响「结束进程(强制)」,见下一节。
  2. PID:Restart Manager 返回的进程号。
  3. 进程:程序的显示名;如果是服务,鼠标移上去能看到服务短名。
  4. 可执行文件:只显示文件名,完整路径在鼠标提示里;读不到时显示「—」。
  5. 权限:「需管理员」标橙,普通进程显示绿色「●」。

列表是空的?

说明现在没有进程占着这些文件,回资源管理器直接删、移即可。注意:路径不存在时也会显示为空。

三档处理办法

面板底部三个按钮从左到右越来越重。按钮旁的三格表是本站的「确认档」:点亮几格,就是动手前问你几次。

图 2该用哪一档
  1. 先点「关闭句柄(友好)」

    程序自己保存退出;没反应的会被强制结束,所以有没存的文档先手动存一下。

  2. 只想结束其中几个:勾选后点「结束进程(强制)」

    确认框里默认是「取消」,确定这些数据不要了再点「是」。

  3. 系统进程、驱动死死占住:「重启后删除」

    排到下次开机删除,不可撤销。

处理完表格不会自动刷新,把文件重新拖进来,确认列表已经空了再去删。

一档 · 关闭句柄(友好)

调用 Restart Manager 的 RmShutdown:先给占用的程序发「请保存并退出」的消息,编辑器、Office 这类程序会先存再关。不响应的程序会被强制结束(调用时带了 RmForceShutdown 标志)。成功后还会试着用 RmRestart 把关掉的程序重新打开,打不开只记一条 WARN。

  • 不弹确认:源码注释写着「友好档:不弹二次确认」。
  • 作用于全部占用进程,不看勾选:按钮要求至少勾一个才能点,但关的是这次查到的所有进程。只想处理其中几个,用第二档。

二档 · 结束进程(强制)

对每个勾选的进程执行 OpenProcess + TerminateProcess,立即结束,不给它保存的机会。

  • 弹出「强制结束进程」确认框:「将立即终止 N 个进程,未保存的数据将丢失」,默认焦点在「取消」,要你主动点「是」。
  • 受保护进程(PPL)和部分系统关键进程即使以管理员身份也可能结束失败,日志会带 Win32 错误码。

三档 · 重启后删除

对每个路径调用 MoveFileExW 并带上 MOVEFILE_DELAY_UNTIL_REBOOT:把删除排到下次开机,那时还没有程序占着文件。

  • 按路径执行,不看勾选;列表为空也能点。
  • 弹出「重启后删除文件」确认框:「将在系统下次重启时删除 N 个文件,操作不可撤销」,默认焦点在「取消」。
  • 放进来的是文件夹时,Windows 只会在重启时删掉空文件夹。

要不要管理员

AgileMedic 每次启动就请求管理员权限(弹一次 UAC),所以查询、结束、重启后删除都直接以管理员身份执行,中途不会再弹 UAC。「重启后删除」要写系统级的待删列表、结束受保护进程要管理员令牌,这是启动就要权限的原因之一。

旧版文档的说法已不适用

旧文档写「按需提权、失败请以管理员身份重启」,与 v0.3.0 的实际行为不符。应用里个别提示框还保留着这句话,可以忽略。

记录写在哪

面板底部的「操作日志」按时间追加每一步,按级别着色:INFO 蓝、WARN 橙、ERROR 红。「清空日志」只清界面,不删磁盘上的记录。落盘位置:

%APPDATA%\AgileMedic\AgileMedic\logs\operations.log

每行「ISO 时间 级别 消息」,UTF-8。路径里的 AgileMedic 出现两次,是组织名与应用名。

  • 不能撤销:文件解锁的三档都没有撤销入口。
  • 不进「操作记录」面板:可逐条撤销的 操作记录 只收服务、启动项、系统优化、环境变量等改动,解锁只写上面这个日志文件。
  • 三个辅助按钮:「打开目标位置」「复制目标路径」「复制解锁报告」。报告是纯文本,含路径、每个进程的 PID / 名称 / 权限 / 勾选状态和当前日志,方便发给同事。

这页没有 AI

文件解锁的查询和三档处理都在本机完成,不发给任何模型,不配模型也完整可用,是免费功能。这个面板里也没有「AI 解释进程」:想问某个进程是什么,到 进程管理 里选中它点「AI 解释这个进程」(AI 功能,需先 配置模型,见 AI 诊断)。

如果你用 Claude、Cursor 经 MCP 接入,AI 可以调用 unlock_file 工具,效果等同第一档;执行前 AgileMedic 会弹窗请你点「允许」。

相关