安装软件的过程,其实就是文件解压和复制的过程。拷贝文件袋额过程中,大部分软件都开发自己独特的功能,这些功能多以DLL动态链接库的形式出现,随安装程序包一起提供。有的软件把这些DLL文件放在自身安装的目录下,另外不少软件则把这些DLL文件拷贝到系统目录下,一般为"\Windows\System"(98系统) "\Winnt\System32"(2000/2003系统)或"\Windows\System32"(XP系统)中。把DLL文件放在自身目录中的好处是,重装系统后软件不用安装也能使用,比如Foxmail,重装系统后原来的Foxmail依然能使用(如果原程序被覆盖的话那就另当别论了)。
-----------------------------------------------------------------------------------------------------------------------------------------------
重启解密1:DLL变更会重启一些软件需要向系统目录中写入DLL文件,但如果系统目录中已经有同名的DLL文件并正被系统调用,则系统会拒绝写入。在Windows98中,当安装程序检测到需要写入的DLL文件正在使用时,会把要写入的DLL文件临时改为别的文件名,然后再Wininit.ini加入一个改写项,并要求重新启动系统,重启后在进入Windows图形界面之前,Wininit.exe会检测Wininit.ini 并执行里面的操作,这样就把旧版本的DLL文件替换掉了。Windows2K/XP中替换文件的方法不同,单元里差不多。
-----------------------------------------------------------------------------------------------------------------------------------------------
文件拷贝完成之后,DLL文件必须将注册信息写进注册表才能正常使用
【如果DLL文件没有注册,系统注册表中就没有这个DLL文件信息.那么等到调用的时候,因为不知道这个DLL文件的位置,只能报告没有这个DLL.所以这时候就需要注册DLL了.WINDOWS系统的DLL不用注册.因为安装时已经注册好了.】
有的软件(Foxmail)在安装时不写注册表,但是启动后会检测相关的注册表项,如果检测不到的话就会重新写入一次。
-----------------------------------------------------------------------------------------------------------------------------------------------
重启解密2:注册表变更会重启
注册表的用法可以是动态也可以是静态的。某些注册表项是被一次读入并且知道系统重新启动才会再次读取;另一些注册表项,则是每次被引用的时候都会被读取一次。系统数据通常都是静态的,所以如果安装软件对系统相关的注册表项做了改动,必须重启才能生效。
-----------------------------------------------------------------------------------------------------------------------------------------------
安装过程到这里基本完成差不多了,接下来是建立程序组和快捷方式,还可能会有其它操作,比如有些程序安装时先把自己解压到临时目录中,等安装结束后就会做一些善后处理,将临时文件夹中的安装文件清除等。