如何找到哪个进程删除了我的文件在Windows中

to94eoyn  于 2023-08-07  发布在  Windows
关注(0)|答案(1)|浏览(247)

用最简单的话来说,是否有一个简单的方法或程序可以帮助识别谁/哪个进程删除了文件。
即使在SysInternals的最新版本的进程监视器中,我也找不到直接告诉“这是一个删除操作,由某个PID或进程名执行”的事件。
我错过了什么吗?

0yg35tkg

0yg35tkg1#

普通删除

在进程监视器中,可以通过“详细信息”列中的“关闭时删除”选项来识别真实的的删除操作。你可以用它作为过滤器:
详细信息、包含、关闭时删除
x1c 0d1x的数据
为什么呢?嗯,有一个DeleteFile() Windows API,它说:
DeleteFile函数标记关闭时要删除的文件。
此外,CreateFile()具有标志FILE_FLAG_DELETE_ON_CLOSE
关闭文件的所有句柄(包括指定的句柄和任何其他打开的或重复的句柄)后,将立即删除该文件。
很可能,DeleteFile()只是用该参数调用CreateFile()。这就是为什么你没有看到一个名为“DeleteFile”的操作,而是意外地在一个名为“CreateFile”的操作中删除了该文件。

回收站删除

为什么我说“真实的的删除操作”?好吧,Windows资源管理器不会在您删除文件时删除它们,而是将它们移动到回收站中。从操作系统的Angular 来看,这不是一个删除操作。这是一次行动。
对于回收操作,添加两个筛选器:
1.操作,Is,SetRenameInformationFile
1.详细信息,包含,$RECYCLE.BIN


低级删除

一些程序在较低级别上操作,并使用SetDispositionInformationFile()或SetDispositionInformationEx()等API。参见MSDN上的低级ZwSetInformationFile()NtSetInformationFile()。该方法采用a parameter
FILE_DISPOSITION_DELETE 0x 00000001指定系统应该删除一个文件。
在我的例子中(使用FastCopy),下面的Process Monitor过滤器捕获了它:
1.操作,等于,设置处置信息Ex
1.详细信息,包含,FILE_DISPOSITION_DELETE

相关问题