用户名:  密码:   
您当前的位置:首页 > 电脑与网络 >  电脑相关 > 

Windows中如何查找某个文件被那个进程或程序占用

上次修改时间: 2024-09-15 18:51:01      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\TXT资料数据库\4电脑相关\问题解决\      下一页

Windows中如何查找某个文件被那个程序占用

方法 1: 使用资源监视器 (Resource Monitor)
任务管理器里切换到 “性能” 选项卡,找到 “资源监视器” 打开。
在资源监视器中,切换到 “CPU” 选项卡。展开 “关联的句柄” 部分。在搜索框中输入文件名或文件路径(可以部分匹配),然后按 Enter 键。

***推荐:
方法 2: 使用 Sysinternals 的 Handle 工具
下载 Handle工具:https://learn.microsoft.com/en-us/sysinternals/downloads/handle
解压后放到C盘并在cmd下切换到该目录。运行以下命令来查找文件句柄:
语法:
handle64.exe filename //将 filename 替换为你要查找的文件的名称或路径。
例:C:\Handle>Handle64.exe 人力行政部值班班表.xlsx  
***注:最后发现是个et.ext的程序占用,经查为wps目录的程序,此程序占用导致同步工具不能同步该表格

==================以下未测试====================
方法 3: 使用 PowerShell
你可以使用 PowerShell 脚本来查找文件占用情况:

# 替换为你要查找的文件路径
$filePath = "C:\Path\To\YourFile.txt"

# 查找文件句柄
Get-Process | ForEach-Object {
    $process = $_
    $process.HandleCount | Out-Null
    $handles = Get-Process -Id $process.Id | Select-Object -ExpandProperty Handles
    foreach ($handle in $handles) {
        try {
            $handleName = [System.IO.Path]::GetFullPath($handle.Name)
            if ($handleName -eq $filePath) {
                [PSCustomObject]@{
                    ProcessName = $process.ProcessName
                    ProcessId   = $process.Id
                }
            }
        } catch {
            # Handle exceptions if needed
        }
    }
}
方法 4: 使用第三方工具
LockHunter: 这是一个免费的工具,可以显示哪些程序锁定了文件并允许你解锁文件。
Process Explorer: 另一个 Sysinternals 工具,提供更详细的进程信息和句柄搜索功能。
下载 Process Explorer:https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer

启动 Process Explorer。使用 “Find” 功能(按 Ctrl + F),输入文件名或路径。
查看结果:
Process Explorer 会显示哪个进程正在使用该文件,你可以在 “Handles” 视图中找到相关信息。
这些方法都可以帮助你确定哪个程序或进程正在使用特定的文件。