WindowsVista里面延迟删除技术的变更

WindowsVista里面延迟删除技术的变更,第1张

WindowsVista里面延迟删除技术的变更,第2张

在Windows 2000/XP/Server 2003中,包括微软在内的所有软件厂商在遇到文件被占用且无法立即替换的问题时,都会使用MoveFileEx API函数使系统处于注册表中。

key:HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ Session Manager值:PendingFileRenameOperations


在键值下建立延迟删除列表。下次启动系统时,CSRSS.EXE进程将根据此列表延迟更新或删除文件。

注意:PendingFileRenameOperations是一个REG_MULTI_SZ注册表键值,不能通过注册表编辑器直接编辑,否则会破坏延迟删除列表。要查看这个键值的内容,可以使用注册表编辑器或者我之前开发的PendMove工具。

对于Windows XP和Windows Vista,在需要重启的补丁后安装PendingFileRenameOperations的关键数据后,会发现Windows XP使用PendingFileRenameOperations控制被占用的文件进行升级和删除被占用的文件。但是,Windows Vista不使用此键值来控制被占用文件的升级和删除。那么Windows Vista补丁是如何延迟删除的呢?

首先需要明确的是,Windows Vista新的重启管理器机制还没有完全使用。按照之前的说法,Windows Vista安装补丁后基本不需要重启,但现在看来,每次打补丁都必须重启系统,而且对于至少几个月的补丁也是如此。

那么Windows Vista是如何知道被占用文件的目标文件和源文件信息,以及如何升级的呢?

经过一番查找,发现Windows Vista使用一个或多个XML文件来记录数据信息,并将临时文件和升级文件存储在专门的目录中。我们知道,过去Windows打补丁后,会出现在Windows目录下的$KB目录中,但Windows Vista好像没有这个内容。你看不出来吗?不是看不见,是因为根本没有生成。

实际上,Windows Vista使用%SystemRoot%\WinSxS目录来存储临时文件、备份文件和配置信息,Windows会根据配置文件适时更新文件。

打开%SystemRoot%\WinSxS目录会看到两个XML文件,pending.xml和cleanup.xml前者记录了文件的新版本信息和旧版本信息,后者似乎是用来清理环境的。

根据XML文件的描述,很容易知道:

%SystemRoot%\WinSxS\Backup目录存储旧版本文件
%SystemRoot%\WinSxS\Temp目录存储需要升级到的新版本文件。

注意:Windows Vista的升级机制与之前版本的Windows不同,是增量升级。也就是说,您只需要下载不同的内容片段,Windows Vista就会将这些内容片段与原始文件拼接在一起,生成一个新文件。

最后一个问题:在Windows Vista之前,操作系统使用CSRSS.EXE来更新文件。Windows Vista呢?

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » WindowsVista里面延迟删除技术的变更

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情