我想监视文件的删除操作,Hook了ZwSetInformationFile,却发现,使用Shift+Delete删除文件的时候FileInformationClass值是FileDispositionInformation,但是使用Delete删除的时候,得不到FileInformationClass的值。不知道是什么原因,是不是Delete删除文件的时候用这个函数监视不到啊?
还请前辈们不吝赐教,谢谢
删除到回收站是把文件移动到回收站目录里面,FileRenameInformation。
谢谢。
但是我却没有捕捉到这个移动操作,下面是我的部分代码:
NTSTATUS MyZwSetInformationFile(......)
{
switch(FileInformationClass)
{
case FileRenameInformation:
DbgPrint("FileRenameInformation\n");
break;
case FileBasicInformation:
DbgPrint("FileBasicInformation\n");
break;
case FileDispositionInformation:
DbgPrint("FileDispositionInformation\n");
break;
case FileEndOfFileInformation:
DbgPrint("FileEndOfFileInformation\n");
break;
case FileLinkInformation:
DbgPrint("FileLinkInformation\n");
break;
case FilePositionInformation:
DbgPrint("FilePositionInformation\n");
break;
case FileShortNameInformation:
DbgPrint("FileShortNameInformation\n");
break;
case FileValidDataLengthInformation:
DbgPrint("FileValidDataLengthInformation\n");
break;
default:
DbgPrint("Other parameter\n");
}
//然后解析出文件名,并打印出来
......
}
使用这段代码测试时,我将一个文件拖动到其他目录下,可以看到有FileRenameInformation的记录,但是使用Delete键删除文件的时候没有找到这条记录,还请前辈指点。
Delete删除文件的时候用这个函数监视的到,感觉你代码没问题,你再看看别的地方是不是别的地方的问题
删除到回收站时值是FileRenameInformation