Windows中如何定位锁定文件或文件夹的进程(错误码32共享违规)
Windows下查询锁定文件的进程标识(错误码32共享违规)
注:Windows错误码32对应
ERROR_SHARING_VIOLATION,含义是目标文件已被其他进程以禁止共享的方式打开,以下方法可直接获取持有文件句柄的进程ID、线程ID等标识信息。
系统内置无需额外安装的查询方式
- 资源监视器可视化查询
按下Win+R快捷键输入resmon回车打开资源监视器,切换到「CPU」选项卡,找到「关联的句柄」搜索框,输入目标文件的完整路径或文件名,搜索结果会直接返回:- 锁定文件的进程名称、进程ID(PID)
- 对应文件的句柄ID
若需要定位到具体线程,可右键对应进程选择「分析等待链」,可直接展示该进程下持有该文件句柄的线程ID(TID)。
- 命令行查询
openfiles命令前置配置:默认仅跟踪网络共享文件句柄,需先开启本地文件句柄跟踪功能:执行
openfiles /local on后重启系统生效。
查询命令格式:openfiles /query /fo list | findstr /i "目标文件名或完整路径"
输出结果会列出打开该文件的进程ID、会话ID信息。- PowerShell 原生API查询
无需额外配置,直接调用ntdll.dll原生接口枚举系统句柄,可直接获取进程、线程关联信息,基础查询框架示例:$targetFilePath = "C:\test\locked_example.docx" Add-Type @" using System; using System.Runtime.InteropServices; public class Win32Native { [DllImport("ntdll.dll")] public static extern int NtQuerySystemInformation(int infoClass, IntPtr buffer, int bufferLen, out int returnLen); [DllImport("kernel32.dll")] public static extern bool CloseHandle(IntPtr handle); }
"@
# 后续遍历系统句柄结构即可匹配目标文件,输出对应PID、TID
```
调试级第三方工具查询
可使用Sysinternals套件中的handle.exe命令行工具,执行handle.exe 目标文件完整路径即可快速输出持有该文件的进程ID、句柄信息,搭配-t参数可直接返回关联的线程ID。
内容的提问来源于stack exchange,提问作者Ian Boyd
相关产品推荐
相关产品推荐

