文件被system进程占用时,需用资源监视器或process explorer定位并关闭句柄,或用handle命令行工具强制释放;无效时可进winpe环境直接操作。

当你在Windows 10中尝试删除、移动或覆盖某个文件时,系统弹出“操作无法完成,因为文件已在System中打开”,说明该文件正被内核级进程(如SYSTEM账户下的驱动、服务或I/O操作)直接持有句柄——普通结束进程无效,必须绕过用户层锁定机制进行干预。
确认占用源与句柄归属
按下 Ctrl+Shift+Esc 打开任务管理器 → 切换到“性能”选项卡 → 点击右下角“资源监视器” → 在“CPU”选项卡下的“关联的句柄”搜索框中输入目标文件名(例如 config.dat)或完整路径(例如 C:\Temp\lockfile.bin)。
等待几秒后,列表将显示所有持有所需文件句柄的进程。重点观察“映像名称”列:若出现 svchost.exe、lsass.exe 或空白项(Owner列为 NT AUTHORITY\SYSTEM),即确认为SYSTEM进程级占用。此时不能直接结束这些进程——强行终止会导致蓝屏或系统崩溃。
使用Process Explorer精准定位并关闭句柄
从微软官方Sysinternals套件下载 Process Explorer(无需安装,解压即用)→ 以管理员身份运行 → 按 Ctrl+F 打开查找窗口 → 输入文件名 → 点击“查找”。
查到结果后,双击对应条目,在弹出的属性窗口中切换到“句柄”标签页 → 右键点击该文件句柄 → 选择“Close Handle”。【此操作仅释放当前句柄,不终止进程本身,安全有效】
关闭句柄后立刻返回资源管理器尝试删除/重命名操作。若仍失败,说明同一文件被多个句柄同时持有,需重复查找→关闭流程,直到无匹配结果为止。
通过命令行强制解除(适用于批量或脚本场景)
以管理员身份运行CMD或PowerShell:
执行:handle -a "文件名"(例如 handle -a "log.txt"),列出所有匹配句柄及PID。
记下PID(如 1234),再执行:handle -c 1234 -p 1234 → 系统会提示是否关闭,输入 y 并回车。
【注意:handle.exe需提前下载并放入PATH路径,或在当前目录下运行;-c参数必须配合-p指定PID,否则可能误关其他进程句柄】
终极方案:重启至WinPE环境操作
若上述方法均无效,且该文件非系统关键组件(如自行生成的日志、缓存、临时导出文件),可准备一个WinPE启动U盘(推荐微PE、FirPE等轻量环境)→ 重启进入PE → 使用PE内置的文件管理器直接删除目标文件。
此方式完全绕过Windows内核句柄锁机制,对SYSTEM进程无任何影响,操作后正常重启回原系统即可。











