阅读:3256回复:5
求助 关于拦截文件删除重命名问题
根据需要我拦截了文件的 CREATE SETINFOR 来过滤 文件创建删除信息
但是如果是删除文件所在的上级目录那么,文件删除有显示 ,但是从回收站恢复文件夹,却没有文件创建、重命名的任何信息 请问问题在哪里? 谢谢 |
|
沙发#
发布于:2011-03-11 09:38
FLT_PREOP_CALLBACK_STATUS
PreSetInformation(__inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects, __deref_out_opt PVOID *CompletionContext) { PFLT_IO_PARAMETER_BLOCK pIopb = Data->Iopb; ULONG IrpFlags = Data->Iopb->IrpFlags; FileInformationClass = pIopb->Parameters.SetFileInformation.FileInformationClass; if (FileInformationClass == FileEndOfFileInformation) { FileEndInfo.EndOfFile.QuadPart = ((PFILE_END_OF_FILE_INFORMATION) pIopb->Parameters.SetFileInformation.InfoBuffer)->EndOfFile.QuadPart; } else if (FileInformationClass == FileDispositionInformation) { FileDispositionInfo.DeleteFile = (BOOLEAN) *((PBOOLEAN) pIopb->Parameters.SetFileInformation.InfoBuffer); // 1 } else if (FileInformationClass == FileRenameInformation) { BOOLEAN bOk = FALSE; WCHAR DestFileName[MAX_PATH] = {0}; if (_wcsnicmp(FileName, DestFileName, ipos) == 0) { //KdPrint(("PreSetInformation! pFileObject = 0x%08X\n", pFileObject)); Status = RenameOperation(FileName, DestFileName); } else if (bDestInList) { //KdPrint(("PreSetInformation! pFileObject = 0x%08X\n", pFileObject)); Status = CutOperation(FileName, DestFileName); } else if (bSrcInList) { //KdPrint(("PreSetInformation! pFileObject = 0x%08X\n", pFileObject)); Status = DeleteOperation(FileName); } |
|
板凳#
发布于:2011-03-11 11:26
谢谢
比如 我删除一个包含在222的文件夹下的111.DOC 删除有显示 但是从回收站回复222文件夹 既无111.DOC的创建显示也无111.DOC的重命名显示 |
|
禁止发言
|
地板#
发布于:2011-03-11 17:11
用户被禁言,该主题自动屏蔽! |
地下室#
发布于:2011-03-12 21:27
回收站中的名字是改过的,你需要知道 它生成文件名的规则.没有对此作过研究
|
|
|
5楼#
发布于:2011-03-12 23:24
我的目标是监控单个软件
删除文件夹也能发现111.doc的删除和DCX.doc的生成 但是恢复文件夹却没有任何renname 和CREATE的截获 恢复文件夹难道属于目录控制irp? |
|