C++ | Windows - 有没有办法找出哪个进程拥有锁定文件的所有权?

标签 c++ windows file process

我想知道的是,是否可以尝试打开一个文件(当它失败时,因为它是用另一个关闭共享的进程打开的)来找出哪个进程正在使用该文件?

我想知道这些信息的原因是因为我正在制作一个可以“修复”恶意文件的小应用程序。

例如,某些恶意软件/广告软件等设置了文件安全描述符,因此用户无法删除文件等。我的应用程序只是重置安全描述符以允许用户重新获得控制权。

我还看到一个文件打开它的子​​进程,例如 (CreateFile) 并关闭共享模式,这样文件就不能被触及,然后应用程序将从内存中执行子进程。

最佳答案

是的,您通常可以只使用 openfiles命令,在通过openfiles/local on 启用此信息的收集之后。

在 Windows NT 中(似乎包括)Windows XP,有一个名为 oh 的类似 Resource Kit 命令,打开句柄 的缩写。

两者的替代方法是使用 SysInternal 的 Process Explorer .


注意:在某些情况下,openfiles 将无法列出某些句柄。当 Windows 拒绝卸载 USB 磁盘时,我会遇到这种情况,声称某些进程正在使用该磁盘上的文件。从未出现过这样的过程。

关于C++ | Windows - 有没有办法找出哪个进程拥有锁定文件的所有权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446557/

相关文章:

c++进入死循环

c++ - 将整数读取和写入文件的程序

C - 包含整数和字符串的文件(除法问题)

c - 搜索并打印目录的所有文件和子文件夹

C++ bool 函数返回 56

c++ - 删除名称为使用字符串变量创建的文件

c++ - CMake 生成的 Xcode 项目无法找到从 Xcode 构建的二进制 "Products"

c# - 在 C# 程序集中处理事件

c++ - 使用 PowerShell 作为控制台,就好像它是使用 AllocConsole 创建的一样

Node.js fs 模块和 windows 路径