如何备份被独占文件?
在windows中,如果一个文件以独占的方式被打开了,一般来讲,别的应用程序就不能再打开这个文件了,但是如果要备份这个文件,怎么办呢?
一般有两种方法来处理。
第一种方法:
使用VSS,这也是微软推荐备份的方法,对该文件所在的卷做volume snapshot, 就可以从VSS里面读取该文件内容了。关于VSS编程开发相关信息,可以参考微软文档。
第二种方法:
可以在内核中比如mini filter中打开这个文件,然后将文件的handle传到应用层,应用层就可以使用这个handle去读文件内容了。
比如内核程序打开这个被占用的文件代码如下:
NTSTATUS
GetFileHandleByFileName(
IN PUNICODE_STRING FullFileName,
OUT PHANDLE Handle
)
{HANDLE FileHandle = NULL;PFILE_OBJECT FileObject = NULL;OBJECT_ATTRIBUTES ObjectAttributes;IO_STATUS_BLOCK IoStatus;InitializeObjectAttributes(&ObjectAttributes,FullFileName,OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,NULL,NULL);NTSTATUS status = FltCreateFileEx(gFilterHandle,NULL,&FileHandle,&FileObject,GENERIC_READ,&ObjectAttributes,&IoStatus,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,FILE_OPEN,FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_ALERT | FILE_SEQUENTIAL_ONLY ,NULL,0,IO_IGNORE_SHARE_ACCESS_CHECK);PT_DBG_PRINT(PTDBG_TRACE_ROUTINES, ("SSMF:GetFileHandleByFileName open the file status is status=%08x\n", status));if (NT_SUCCESS(status) && FileObject){status = ObOpenObjectByPointer(FileObject,0,0,GENERIC_READ,*IoFileObjectType,UserMode,Handle);PT_DBG_PRINT(PTDBG_TRACE_ROUTINES, ("SSMF:ObOpenObjectByPointer open the file (%p) status is status=%08x\n", Handle,status));}if (FileHandle)FltClose(FileHandle);if (FileObject)ObDereferenceObject(FileObject);return status;
}
如何备份被独占文件?相关推荐
- 实验: VMware使用快照间接备份原始VMDK文件
资料上看的使用快照备份运行着的虚拟机 当虚拟机开着时,快照提供了一个备份原始 VMDK 文件的好办法.所有的写入操作 在原始文件上暂停了,因此,复制它在另一个存储卷很安全.这就是像 VMwar ...
- oracle 无备份恢复数据文件
场景: 1.数据库没有备份 2.数据文件损坏 3.不符合使用控制文件和日志文件恢复的场景 1.模拟数据文件损坏 SYS@orcl11g> host cp /etc/passwd /u01/ ...
- 根据输入时间段备份压缩日志文件
根据输入时间段备份压缩日志文件为tar包, ant-1.7.1.jar import java.io.File; import java.io.FileInputStream; import java ...
- SpringBoot项目中对mysql数据库进行定时备份为sql文件的实现思路
场景 在SpringBoot搭建的项目架构中,为了防止数据库被清库或者误删数据库的情况. 所以需要一个定时将mysql的数据库中的数据进行备份成sql文件,并将重要的sql文件通过邮件服务器的方式 发 ...
- [20161031]rman备份与数据文件OS块.txt
[20161031]rman备份与数据文件OS块.txt --每个数据文件都有一个OS块,位于数据文件的第1块(也是0块).通过bbed无法访问: BBED> set dba 7,0 BBED- ...
- win2003无法进入桌面_救急,如何通过命令行备份桌面重要文件?
今天要说的问题,日常使用中还蛮常见的,比如出现紧急:近期系统更新后进不了系统的一定要看!中类似的情况. 对于具有U盘启动盘的朋友们来说,这不是事,因为我们可以通过U盘启动进PE来备份数据,但是日常中, ...
- oracle sh文件怎么打开,Oracle数据库逻辑备份的SH文件
该Oracle教程将告诉诸位学习Oracle的朋友:Oracle数据库逻辑备份的SH文件. 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su ...
- dedecms备份mysql数据库文件_dedecms备份的数据库文件在哪里
织梦内容管理系统(DedeCms) 是一个简单.实用.开源的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统. dedecms备份的数据库文件在哪里 大家平常使用dedecms后台备份数据 ...
- 如何迁移mac电脑上的itunes备份iphone的文件
我把mac系统装在128G的ssd固态硬盘上,结果发现我的用户名下的文件夹有20多G不明文件,又显示不出来,想节约一些ssd上的空间,想把这些可能有用可能没用的文件转移到我250G的机械硬盘上. 通过 ...
最新文章
- scrapy 中不同页面的拼接_scrapy官方文档提供的常见使用问题
- SQL Tips:兼顾检索速度和精确性
- java 上下文加载器_如何将JDK6 ToolProvider和JavaCompiler与上下文类加载器一起使用?...
- 6种CSS控制元素上下居中效果
- 链表题目---6 复制带随机指针的链表
- 工作336:uni-ele-el-table修改宽度问题
- 计算机视觉论文-2021-06-09
- 赠书5本包邮:数据思维实践、Cloud Native分布式架构原理与实践
- Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
- Idea快捷键大全(比较全的)
- 桂林老兵php,中间件解析漏洞
- 关于PHP的著作文献,著作类参考文献格式
- cocos2d-x 3.2 之 三消类游戏——万圣大作战
- Duplicate entry问题
- 对讲机CE认证需做什么测试
- 《西部世界》S2E9:蝶化庄周,浮生若梦
- JDBC的传统连接弊端
- ad9850c语言编程,AD9850与单片机波形生成程序及设计
- 青海大学昆仑学院计算机机考,青海大学昆仑学院英语六级考试报名入口2020年上半年...
- 《安富莱嵌入式周报》第310期:集成大语言模型的开源调试器ChatDBG, 多功能开源计算器,M7内核航空航天芯片评估板, Zigbee PRO规范
热门文章
- php docker开发环境,使用Docker的PHP开发环境
- Java:Java的输入类Scanner
- linux root登陆ftp,LINUX服务器下用root登录ftp
- 求一个集合的所有子集 Python实现
- java 协程线程的区别_为什么 Java 坚持多线程不选择协程?
- 基于spark mllib_Spark高级分析指南 | 机器学习和分析流程详解(下)
- python 笔记:装饰器
- 文巾解题 77. 组合
- R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
- MATLAB中的varargin,varargout在函数中运用