澳大利亚新闻 澳洲留学移民 澳洲留学移民精华 澳大利亚广播电台 澳大利亚英语讲座 雅思听力 雅思口语 雅思阅读 雅思写作 澳大利亚贴图 新西兰论坛 澳大利亚招聘 澳大利亚租房 澳大利亚旅游 澳大利亚黄页 澳大利亚宠物 澳大利亚文学 澳大利亚美食 堪培拉,Canberra论坛 悉尼,Sydney论坛 墨尔本,Melbourne论坛 布里斯本,Brisbane论坛 悉尼大学,USYD Forum 新南威尔士大学,UNSW CSA Forum 麦觉理大学,MQ Forum 悉尼科技大学,UTS Forum TAFE 澳洲高中,Taylors College论坛 墨尔本大学联盟 Adelaide大学联盟 昆士兰大学联盟

Windows Vista里面延迟删除技术的变更(页 1) - 澳洲电脑及数码产品 -

澳洲中文网 » 澳洲电脑及数码产品 » Windows Vista里面延迟删除技术的变更
悉尼专业美发
2007-9-10 15:08 dangjr1919
Windows Vista里面延迟删除技术的变更

在 Windows 2000/XP/Server 2003 里面,包括Microsoft在内的各个软件厂商在碰到文件被占用无法马上替换问题的时候,都会使用MoveFileEx API函数让系统在注册表

Key:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

Value:PendingFileRenameOperations

键值下面建立一个延迟删除列表,系统在下次启动的时候,CSRSS.EXE进程将根据这个列表对文件进行延迟更新或者延迟删除操作。

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

对于Windows XP和Windows Vista两个操作系统在安装完需要重启的补丁以后的PendingFileRenameOperations键值数据以后会发现,Windows XP是利用PendingFileRenameOperations控制被占用文件进行被占用文件的升级和删除操作的。而Windows Vista并没有使用这个键值控制被占用文件的升级和删除操作。那么Windows Vista 补丁程序是怎么实现的延迟删除呢?

首先,需要明确的一点就是Windows Vista 新增的 Restart Manager 机制并没有完全被使用如果按照以前的说法,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 会根据片段内容和原始文件进行拼接以后,生成新的文件。

页: [1]



Powered by 澳大利亚中文网 5.5.0  © 2005-2007 澳大利亚论坛