给大家讲讲微软的延时删除技术
说起延迟删除,大家可能都很陌生,但是实际上,该功能已经被各种软件所采用:如安装Windows 补丁程序(如:HotFix、Service Pack)、安装Office 补丁程序、反病毒软件的的清除、软件的升级等等等等……
本文将首先介绍延迟删除/重命名的工作机制,然后介绍如何使用这个功能维护你的系统。
很多人可能都碰到过下面的一种情形:在安装某个软件的时候,安装程序正在初始化,突然,安装程序弹出一个类似于下面所描述的警告提示:发现有重启操作没有完成,在重启系统之前安装过程不能继续。然后安装程序自动退出。这类提示最常发生在安装Microsoft SQL Server 的时候。之所以出现这种提示,是因为安装程序检测到了有未完成的重启。那么安装程序是如何发现有未完成的重启呢?这就是本文的要点所在:Windows 2000/XP/Server 2003 的延迟删除/重命名功能。对于软件开发人员来说,Windows 2000/XP/Server 2003 的延迟删除/重命名功能并不是什么新鲜玩意,但是其实行的机制倒很少有人会关注。本文不想过多地涉及Windows 内
部的实现机制,但是仅从一个侧面简单的描述一下Windows 2000/XP/Server 2003 的延迟删除/重命名功能的原理和适用范围。对于Windows 操作系统而言,要想成功的删除一个文件或重命名一个文件,需要满足一个条件:文件不能被占用。可是有的时候,要删除/重命名的文件总是被某个进程占用着,这样一来操作者就无法对这个文件进行删除和重命名。要解决这个问题,微软在Windows操作系统里面提出了一个延迟删除/重命名的功能。需要说明的是,这个功能不仅存在于Windows 2000/XP/Server 2003 操作系统里面,对于Windows 9X,这个功能也是存在的。只不过本文的重点在于介绍延迟删除的故事
1. 如果有任何应用程序需要使用延迟删除/重命名功能,那么该应用程序会使用一个
特殊的参数MOVEFILE_DELAY_UNTIL_REBOOT 来命令Win32 API 函数