Windows删除文件的实现分析
2006-08-06 16:10
405 查看
Windows下删除文件的实现方式本质上有以下两种:
1. 使用FILE_DELETE_ON_CLOSE
ZwCreateFile和IoCreateFile的CreateOptions 参数可以通过使用FILE_DELETE_ON_CLOSE标志来实现删除文件的功能。顾名思义,使用此标志打开的文件在关闭时会删除该文件。
如要在文件过滤驱动中判断是否设置了FILE_DELETE_ON_CLOSE标志,只需截获IRP_MJ_CREATE请求,通过pIrpStack->Parameters.Create.Options判断即可。
2. 使用FileDispositionInformation
这种方式需要使用Native API ZwSetInformationFile,将最后一个参数FileInformationClass设置为FileDispositionInformation即可。ZwSetInformationFile的详细用法可参见DDK。Windows API中的DeleteFile就是使用这种方式实现删除文件功能的。
如需要在文件过滤驱动中监视这种方式的删除文件,只需监视IRP_MJ_SET_INFORMATION请求,通过判断pIrpStack->Parameters.SetFile.FileInformationClass是否为FileDispositionInformation且((PFILE_DISPOSITION_INFORMATION)Irp->AssociatedIrp.SystemBuffer)->DeleteFile是否为TRUE来判断是否是删除文件操作。
1. 使用FILE_DELETE_ON_CLOSE
ZwCreateFile和IoCreateFile的CreateOptions 参数可以通过使用FILE_DELETE_ON_CLOSE标志来实现删除文件的功能。顾名思义,使用此标志打开的文件在关闭时会删除该文件。
如要在文件过滤驱动中判断是否设置了FILE_DELETE_ON_CLOSE标志,只需截获IRP_MJ_CREATE请求,通过pIrpStack->Parameters.Create.Options判断即可。
2. 使用FileDispositionInformation
这种方式需要使用Native API ZwSetInformationFile,将最后一个参数FileInformationClass设置为FileDispositionInformation即可。ZwSetInformationFile的详细用法可参见DDK。Windows API中的DeleteFile就是使用这种方式实现删除文件功能的。
如需要在文件过滤驱动中监视这种方式的删除文件,只需监视IRP_MJ_SET_INFORMATION请求,通过判断pIrpStack->Parameters.SetFile.FileInformationClass是否为FileDispositionInformation且((PFILE_DISPOSITION_INFORMATION)Irp->AssociatedIrp.SystemBuffer)->DeleteFile是否为TRUE来判断是否是删除文件操作。
相关文章推荐
- Windows API c实现查找、删除任意类型的文件_VERSION终结版(vc6.0调试通过)
- 利用bat脚本语言实现windows下文件的可靠复制与删除
- Python调用Windows CMD命令删除文件异常分析与解决
- 基于visual c++之windows核心编程代码分析(26)实现文件关联
- windows 7 开机慢,分析解决 删除无用文件目录
- 基于visual c++之windows核心编程代码分析(26)实现文件关联
- 删除的文件也能找回-深度分析windows下的文件删除问题
- Windows递归删除目录下所有文件-C实现
- 用非常规手段有效删除Windows怪文件正文分析错误
- Windows 7 C 盘隐藏文件分析 删除
- DUMP文件分析5:Windows中malloc和free的实现
- Windows 7 C 盘隐藏文件分析 删除
- windows删除一个目录下的文件c代码
- Windows 7中轻松搞定无法删除文件
- virtualbox安装Ubuntu虚拟机实现与windows真机文件共享教程(mount -t vboxsf方法)
- 用远线程实现文件自删除(代码)
- linux系统Samba安装配置实现与Windows文件共享
- Windows下通过bat批处理文件和vbs脚本实现守护进程
- 用shell脚本实现删除一定大小的文件
- Python实现文件复制删除