Windows注册表的弊端

类别:VC语言 点击:0 评论:0 推荐:
Windows注册表的弊端
作者:Hookson          Email:[email protected]
在Microsoft的Windows中,系统和应用程序的配置广泛的使用了注册表数据库,它在给系统带来很大的灵活性的同时也给一些另外的用户带来了很大的麻烦,下面来举例说明这一点。
1. 在Windows启动过程中,系统需要读取大量的注册表数据,它们都是以字符串的形式来寻值的,我们知道,注册表的子键层次很深,每次从根开始都有很大的时间开销。加上那些长度不算小的字符串比较操作,大大影响了系统的性能。最明显的一个影响就是系统启动速度减慢,WindowsXP的启动速度比Windows9x慢有一个重要的原因就是读取得注册表数据增多了。在配置稍落后的机器上,简直难以忍受。在启动方面我对Microsoft有一个建议,就是每次启动系统的时候不用每次都去初始化什么东西和判断运行环境什么东西,这在大部分情况下是多此一举的,其实我们的系统处于稳定的时候我们的硬件和软件都是不会有什么变化的,在这种情况下启动系统的时候我们只要把上一次离开系统的状态也就是内存中(包括虚拟内存)中的数据dump到硬盘上,下次启动的时候只要把dump的文件反过来dump到内存中,那就可以了嘛,也不必每次离开系统的时候都dump一下,只要有一次好的dump结果就行了,这样一来,那系统启动的速度一定会大大加快。当我们需要对系统配置作一些变动的时候我们再告诉系统,让它按古典的启动方式(暂且让我把现在的启动方式这样称呼吧)。时间是很宝贵的,如果我们世界上每个人每天都能节省一分钟,那每天就有一万多人年的工作机会,由此可见!
2. 一些恶意的程序可以任意的修改注册表,导致系统被做了非自愿的修改甚至导致系统崩溃,给用户带来不愉快甚至很大的损失,大部分的木马程序就是依靠在注册里修改特定的键值来繁衍生息的。如在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
RunServices
里加上自动启动;在HKEY_CLASSES_ROOT\<文件类型>里加上恶意的打开放式;限制用户的操作等等。
3. 系统所有的配置信息都放在一个数据库里面导致了不安全性,部分数据发生问题都会有可能导致整体的崩溃。如果一个磁盘扇区错误导致根键的发生问题,那么这个键下所有的子键都不可用了,虽然这种情况很少发生,但可能性是完全存在的,一旦发生结果非常严重。
4. 注册表的好处对普通用户体现不出来。由于注册表数据庞杂,普通用户对Windows系统的特性了解肤浅,普遍对注册表感觉有一点神秘,不敢擅自去编辑,同时系统提供给用户用来配置的应用程序也没有充分发挥注册表的威力,所以导致技术的存在而没有实用性,从而在浪费系统开销的同时并不能给用户带来好处。
5. 给程序移动和拷贝带来不必要的麻烦。通常的程序都会在注册表里注册自己的配置,离开这些配置,会导致程序无法正常运行。所以程序所在的文件夹路径一旦改变就会导致程序出错。把程序从一台机器拷贝到另一台机器时会发生更加严重的问题。在很多时候我们需要这样做,但是注册表的这个自身生来的弱点阻止了我们,所以我们不得不重新安装,浪费了宝贵的时间和精力。有时候又苦于没有安装程序,真是叫天不灵。要是手工来修改注册表项,那一是你不太清除到底应该修改那些,二是很多程序的注册表项极多,根本不可能修改的过来。
          (相应对策)待续…
2001年7月23日星期一

本文地址:http://com.8s8s.com/it/it2313.htm