ZwSetInformationFile删除文件的FileInformationClass值

sunyitui   2009-4-12 18:33 楼主
我想监视文件的删除操作,Hook了ZwSetInformationFile,却发现,使用Shift+Delete删除文件的时候FileInformationClass值是FileDispositionInformation,但是使用Delete删除的时候,得不到FileInformationClass的值。不知道是什么原因,是不是Delete删除文件的时候用这个函数监视不到啊?
还请前辈们不吝赐教,谢谢

回复评论 (3)

删除到回收站是把文件移动到回收站目录里面,FileRenameInformation。
点赞  2009-4-12 21:48
谢谢。
但是我却没有捕捉到这个移动操作,下面是我的部分代码:

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键删除文件的时候没有找到这条记录,还请前辈指点。
点赞  2009-4-13 08:29
Delete删除文件的时候用这个函数监视的到,感觉你代码没问题,你再看看别的地方是不是别的地方的问题
删除到回收站时值是FileRenameInformation
点赞  2009-4-15 16:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复