查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】

摘要:
在Windows系统中,当我们删除文件或文件夹时,有时会提示该文件正在使用,无法删除。此时,我们非常失望。当进程占用或打开文件时,会创建一个文件内核对象,并且在进程地址空间中有一个指向文件内核对象的句柄。此命令还关闭单个共享文件并删除文件锁。此时,如果您知道文件/文件夹由哪个进程使用,则可以使用任务管理器结束该进程,然后可以修改该文件。

windows系统中当我们在删除某个文件或文件夹时有时会提示该文件有程序在使用不能被删除,这时相当惆怅。那么可以用这个方法来找到是哪个进程在占用该文件:  

1:打开任务管理器选择“性能”  
2:单击下部的“资源监视器”  
3:选择“CPU”,在下部可以看到“关联的句柄”搜索框  
4:在该搜索框中输入要删除的文件名回车  

在下面就会列出来占用该文件的进程名,右键该进程单击“结束进程”,OK,可以删除了:

查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】第1张

注释:

(在操作系统界面上所说的)文件和文件夹,其本质在文件系统层次上都是一个文件的形式,所以问如何查看文件被哪个进程使用和问查看文件夹被哪个进程使用其实是同一个问题而已。当一个进程占用或叫打开一个文件(或文件夹)(之后便可使用(即读或写)该文件)时,便有一个文件内核对象被创建,且在该进程地址空间中存在一个该文件内核对象的句柄。上述图片中,cd zzw是表示cmd进程占用或叫打开一个叫zzw的文件夹(即读取zzw文件夹的元数据到内存),之后,若是输入查看该目录下的有哪些文件的命令则表示cmd进程读取zzw文件夹的数据,若是输入添加或是删除zzw文件夹下的文件时表示cmd进程写入zzw文件夹的数据。当一个文件要被关闭(本质上,即文件内核对象要被销毁)之前,其在各个进程地址空间中的引用(的句柄)都要被关闭才可执行文件关闭操作,所以上述图片例子里,若是你在操作系统界面上(具体是,windows资源管理器里)要关闭该zzw文件夹,就得先关闭cmd里对zzw文件夹的引用,否则就会提示“文件夹或者文件正在被使用,操作无法完成”。

======================================================

   查看文件被哪个进程占用
 
openfiles
用于查看各个进程所打开的文件。windows自带工具。
必须先用openfiles /local on 命令启用系统全局标志“维护对象列表”;
再重启后执行openfiles查看各进程文件。
Process Mointor
微软提供的工具,需要下载,下载路径http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
process explorer          process monitor

========================================================

unlocker工具

抑或是结合用openfiles或者Wmic命令是否能做到呢?

不需要什么环境变量,我都是直接把文件拖到unlocker.exe,CMD命令为C:unlocker.exe "c:某文件夹",如果不想写全路径可以把unlocker相关文件放在system32文件夹下。因为要用到rootkit技术,所以只用系统自带命令应该是不行的

参见:http://bbs.cfanclub.net/thread-543485-1-1.html

文件锁定检测工具(检查哪个进程占用文件) v1.0 绿色版
删除文件时遇到”无法删除”或DLL等文件无法删除的时候,本软件就可以检测到这个文件被哪个进程调用了,会给出进程路径、PID、句柄等信息

软件截图

文件锁定检测工具(检查哪个进程占用文件) v1.0 绿色版
 
 
用 procexp.exe 查询(目录名)句柄,就可以发现是哪个进程正在使用此句柄。
 
如果需要删除目录,直接关闭句柄就可以了。
unlocker可以查文件夹么? 我知道dll文件tasklist命令就可以
参考:http://bbs.csdn.net/topics/350156293
 
CMD查看文件夹被哪个程序占用
Net file

显示服务器上所有打开的共享文件名称以及每个文件的文件锁定码(如果有的话)。该命令也关闭单独的共享文件并删除文件锁定。使用不带参数的 net file 命令显示服务器上打开文件的列表。

===================================================================
参考:
百度
文件夹被哪个程序占用
文件夹被占用
查看文件夹被哪个程序占用
查看文件被哪个程序占用
=====================================
 
windows中查看文件正在被哪个进程使用
  • |
  • 浏览:6111
  • |
  • 更新:2014-02-26 01:05
  • |
  • 标签:windows 
  1. 应用背景:

      windows操作系统中,有时我们关闭程序后,一些相关的进程仍在后台运行,并访问着一些文件,使得我们无法对这些文件及其所属的文件夹进行删除、重命名等操作。

      此时,如果知道这个文件/文件夹正在被哪个进程使用,就可以用任务管理器结束这个进程,然后就可以对文件进行修改了。(请谨慎决定是否结束关键的、可能会影响系统正常工作的进程。)

  2. 查看方法:

    1.打开 资源管理器(Ctrl+Shift+Esc)

    2.选择 性能 选项卡

    3.点击右下角的 资源监视器

    查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】第3张

    4.选择 概述 选项卡

    5.选择 “磁盘”

    查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】第4张

    6.在“磁盘”下方弹出的列表中,第三列“文件”就是当前被进程打开的文件。可能需要最大化窗口并手动调整列宽才能看清。

    7.表中的第一列 映像 即是打开这个文件的进程名称,可考虑在任务管理器中结束该进程

    8.如果有重名的多个进程,以第二列 PID 为准

转自:http://blog.csdn.net/haiross/article/details/49678655

免责声明:文章转载自《查看文件(或文件夹)被哪个进程使用【文件已在另一程序中打开】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇zabbix配置ldap域账号登录SetForegroundWindow以及 如何将一个某个窗口提到最顶层(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#中利用Handle的操作

C#中利用Handle的操作 1.我新建了个窗体,窗体中放个Label,这个Label用来显示窗体的句柄。 2.拖个Timer控件到窗体中,设置属性Enable=true 3.代码里添加名字空间引用 using System.Runtime.InteropServices; //加入获得Handle的API [DllImport("user32.d...

深入了解Windows句柄到底是什么(句柄是逻辑指针,或者是指向结构体的指针,图文并茂,非常清楚)good

总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。 这里我列举词条中的关于句柄的叙述不...

Win32编程

    Win32编程 此资料为ITjob软件开发教程网提供,特此分享,互相学习! C/C++/VC/MFC技术交流群:95453496 一、Win32编程基本概念 1、消息驱动 在介绍Windows消息驱动概念之前,我们首先来回顾面向过程的程序结构:main()程序有明显的开始、中间过程和结束点,程序是围绕这个过程编写好相关的子过程,再把这些子过程串联...

如何在WPF 应用中获取窗体或控件的句柄

窗体: IntPtr hwnd = new WindowInteropHelper(this).Handle; 控件: IntPtr hwnd = ((HwndSource)PresentationSource.FromVisual(uielement)).Handle; 注:该调用不能在多线程里面使用...

【内存检测系列】window下windbg内存泄漏检查

文章目录 1、使用windbg中的umdh检查 1.1、 工具下载 1.2、环境配置 1.3、利用工具umdh(user-mode dump heap)分析 1.4、利用umdh创建heap快照 2、使用windbg中的htrace检查 2.1、准备工作 2.2、快照 2.3 、执行操作,比较差异 2.4、找到代码行 2.5、Process E...

句柄与句柄表(数据结构,源码分析)

0x01  句柄,句柄表概念     任意进程,只要每打开一个对象,就会获得一个句柄,这个句柄用来标志对某个对象的一次打开,通过句柄,可以直接找到对应的内核对象。句柄本身是进程的句柄表中的一个结构体,用来描述一次打开操作。句柄值则可以简单看做句柄表中的索引,并不影响理解。HANDLE的值可以简单的看做一个整形索引值。     每个进程都有一个句柄表,用来记...