任务管理器中查看文件被哪个进程占用

我们应该会经常遇到这样的情况,当删除一个文件或者文件夹时,提示无法删除,文件被占用;但是提示信息中有时并未给出是被哪个进程所占用,如果能找出文件被哪个进程占用,然后杀死相应的进程,文件就能被删除。

写一个程序,如下所示:

#include "stdafx.h"
#include <Windows.h>
#include <string>

int main()
{
	char szFilePath[MAX_PATH + 1] = { 0 };
	GetModuleFileName(NULL, szFilePath, MAX_PATH);
	std::string strFilePath = szFilePath;
	size_t posTemp = strFilePath.find_last_of("\\");
	std::string strCurrDir = strFilePath.substr(0, posTemp);
	std::string strFile = strCurrDir + "\\" + "TestFile\\1.txt";
	HANDLE hFile = CreateFile(strFile.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
	while (1);
    return 0;
}

上面的例子很简单,在进程的当前目录下的TestFile目录下,有个1.txt文件,进程打开此文件,然后手工删除此1.txt所在文件夹TestFile,报下面这样的错误。
在这里插入图片描述
此时打开任务管理器,进入到性能选项卡,如下所示:
在这里插入图片描述
然后打开资源监视器,如下所示:
在这里插入图片描述
切换到cpu选项卡,在关联的句柄里面输入文件名称或者文件夹名称,如下所示:
在这里插入图片描述
这里面输入的是TestFile,输入后,下面会显示正在搜索的字样,因为这里面会遍历所有的进程,枚举进程打开的文件名,所以会花费少许时间,最终结果出来了,如下图所示:
在这里插入图片描述
很明显,OpenFile.exe打开了相应的资源。

**注意:**关联的句柄也可以输入1.txt,只要句柄名称中有此字符串即可,
目前笔者在win7和win10上都有测试过。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值