用最简单的话来说,是否有一个简单的方法或程序可以帮助识别谁/哪个进程删除了文件。即使在SysInternals的最新版本的进程监视器中,我也找不到直接告诉“这是一个删除操作,由某个PID或进程名执行”的事件。我错过了什么吗?
0yg35tkg1#
在进程监视器中,可以通过“详细信息”列中的“关闭时删除”选项来识别真实的的删除操作。你可以用它作为过滤器:详细信息、包含、关闭时删除x1c 0d1x的数据为什么呢?嗯,有一个DeleteFile() Windows API,它说:DeleteFile函数标记关闭时要删除的文件。此外,CreateFile()具有标志FILE_FLAG_DELETE_ON_CLOSE:关闭文件的所有句柄(包括指定的句柄和任何其他打开的或重复的句柄)后,将立即删除该文件。很可能,DeleteFile()只是用该参数调用CreateFile()。这就是为什么你没有看到一个名为“DeleteFile”的操作,而是意外地在一个名为“CreateFile”的操作中删除了该文件。
FILE_FLAG_DELETE_ON_CLOSE
为什么我说“真实的的删除操作”?好吧,Windows资源管理器不会在您删除文件时删除它们,而是将它们移动到回收站中。从操作系统的Angular 来看,这不是一个删除操作。这是一次行动。对于回收操作,添加两个筛选器:1.操作,Is,SetRenameInformationFile1.详细信息,包含,$RECYCLE.BIN
的
一些程序在较低级别上操作,并使用SetDispositionInformationFile()或SetDispositionInformationEx()等API。参见MSDN上的低级ZwSetInformationFile()或NtSetInformationFile()。该方法采用a parameter:FILE_DISPOSITION_DELETE 0x 00000001指定系统应该删除一个文件。在我的例子中(使用FastCopy),下面的Process Monitor过滤器捕获了它:1.操作,等于,设置处置信息Ex1.详细信息,包含,FILE_DISPOSITION_DELETE
1条答案
按热度按时间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