创意联盟

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

搜索
热搜: mysql server
查看: 662|回复: 0

Windows Vista里面延迟删除技术的变更 [复制链接]

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

发表于 2008-7-4 18:29:06 |显示全部楼层
<font style='font-size:1px;color:white'>ttxhfree</font>
<p style="text-indent: 2em">在 windows 2000/xp/server 2003 里面,包括microsoft在内的各个软件厂商在碰到文件被占用无法马上替换问题的时候,都会使用movefileex api函数让系统在注册表 </p>
<p style="text-indent: 2em">key:hkey_local_machine\system\currentcontrolset\control\session manager</p>
<p style="text-indent: 2em">value:pendingfilerenameoperations</p>
<p style="text-indent: 2em">键值下面建立一个延迟删除列表,系统在下次启动的时候,csrss.exe进程将根据这个列表对文件进行延迟更新或者延迟删除操作。 </p>
<p style="text-indent: 2em">注:pendingfilerenameoperations是一个reg_multi_sz类型的注册表键值,不能直接通过注册表编辑器编辑,否则会造成延迟删除列表被破坏。要查看这个键值的内容,可以使用注册表编辑器或者使用我以前开发的 pendmove 工具,</p>
<p style="text-indent: 2em">对于windows xp和windows vista两个操作系统在安装完需要重启的补丁以后的pendingfilerenameoperations键值数据以后会发现,windows xp是利用pendingfilerenameoperations控制被占用文件进行被占用文件的升级和删除操作的。而windows vista并没有使用这个键值控制被占用文件的升级和删除操作。那么windows vista 补丁程序是怎么实现的延迟删除呢?</p>
<p style="text-indent: 2em">首先,需要明确的一点就是windows vista 新增的 restart manager 机制并没有完全被使用如果按照以前的说法,windows vista 在安装完补丁程序以后基本上是不需要重启的,但是现在看来每次打补丁都必须重启系统,至少进几个月的补丁都是这样的。</p>
<p style="text-indent: 2em">那么windows vista是如何得知被占用文件的目标文件和源文件信息,如何进行升级的呢?</p>
<p style="text-indent: 2em">在进行一番搜索以后,发现windows vista是利用一个/多个xml文件记录数据信息,在一个特别的目录里面存放临时文件和升级文件的。我们知道,以前打完windows 补丁,都会在windows目录下出现在$kb目录,但是windows vista好像没有这个内容,看不见吗?不是看不见,是因为根本就没有生成。</p>
<p style="text-indent: 2em">实际上,windows vista 是利用 %systemroot%\winsxs 目录来存放临时文件、备份文件和配置信息的,windows 会在适当的时候根据配置文件来完成文件的更新操作。</p>
<p style="text-indent: 2em">打开 %systemroot%\winsxs 目录,会看到两个xml文件,pending.xml 和 cleanup.xml。前者记录了文件的新版本信息和旧版本信息,后者用途好像是用于清理环境的。</p>
<p style="text-indent: 2em">根据xml文件的描述,很容易得知:
<ol>
<li>%systemroot%\winsxs\backup 目录存放旧版本的文件
<li>%systemroot%\winsxs\temp 目录存放需要升级到的新版本文件 </li></ol>
<p></p>
<p style="text-indent: 2em">注意:windows vista 的升级机制又不同于以前版本的windows,是增量升级哦。也就是只需要下载不同的片段内容,windows vista 会根据片段内容和原始文件进行拼接以后,生成新的文件。</p>
<p style="text-indent: 2em">最后留一个问题给大家:windows vista 之前的操作系统是利用 csrss.exe 实现文件更新的,那么windows vista呢?</p>
<p style="text-indent: 2em">本文转自:http://blogs.itecn.net/,作者:smallfrogs</p>
<p style="text-indent: 2em"><strong><strong><strong><strong>学习更多知识与技巧 请点击 学院</strong></strong></strong></strong> <img src="http://tech.163.com/newimg/arc_d.gif">
<a href= target=_blank><font style='font-size:1px;color:white'>贴探小黑2007-论坛管理助手</font></a><br /><br /><br><br>
您需要登录后才可以回帖 登录 | 注册

Archiver|意盟 ( 闽ICP备06022703号 )

GMT+8, 2012-2-8 02:58 , Processed in 0.126007 second(s), 12 queries , Eaccelerator On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部