Windows注册表修改实例完全手册(下)
日期:2006-11-13 荐:
注册表是Windows操作系统的核心。它实质上是一个庞大的数据库,存放有计算机硬件和全部配置信息、系统和应用软件的初始化信息、应用软件和文档文件的关联关系、硬件设备说明以及各种网络状态信息和数据。可以说计算机上所有针对硬件、软件、网络的操作都是源于注册表的。
本文详细罗列出各种注册表的修改实例,并明确标注其适应的范围,以利于读者速查。
三、加强Windows系统安全
在目前这个病毒泛滥,"黑客横行"的网缡贝颐潜匦胗斜肝藁迹忧考扑慊低车陌踩6⒉岜碜魑猈indows操作系统的核心部分,往往成为病毒和黑客利用的工具。如果使用者缺乏注册表的相关知识,将无法找到病毒的"发源地",而无法将之清除。另一方面,注册表也起着积极的作用。通过注册表,我们可以进一步加强Windows系统的安全,防止各种非授权的使用,以防止病毒和黑客的入侵。
1.保护个人信息
如果你是和别人合用一台计算机,或者你有比较私人的内容需要保护,那么你可以通过注册表来加强对这些私人信息的保护。
(1)清除本机访问信息
一般情况下,Windows为了方便使用者,总是将使用者最近访问过的文档、运行过的程序等信息保存下来,我们需要去除掉Windows提供的这种方便。
下表中的值项,位于注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\EXPlorer中。
(2)清除操作信息
在我们使用Windows操作系统的过程中,很多操作内容都被存放到了注册表中。例如通过"开始"菜单的"运行"项运行过的程序名称、访问过"网上邻居"中的计算机、访问过计算机上的文件夹等。通过注册表,我们可以手工清除这些信息。
(3)加密个人文件夹
上面讨论的都是清除用户适用计算机时留下的信息。下面我们利用注册表知识,来加密我们的存放了个人信息的文件夹。
我们知道,如果想隐藏你的文件夹,通过将文件夹的属性设置为"隐藏"是没有用的。用户只需要在资源管理器的"工具"→"文件夹选项"→"查看"对话框中,选择"显示所有的文件和文件夹"项,就可以看到所有隐藏属性的文件夹和文件。有一个小技巧,可以有效的保护你的文件夹。这个技巧就是,用类标识符作为文件夹名的文件扩展名。例如我们想保护文件夹C:\mydata。
首先在注册表项HKEY_CLASSES_ROOT中找到某个文件类型的CLSID,如MIDI文件的CLSID是{00022603-0000-0000-C000-000000000046}。将文件夹mydata的名称加上{00022603-0000-0000-C000-000000000046}这个文件扩展名,即将C:\mydata的名称修改为"C:\mydata.{00022603-0000-0000-C000-000000000046}"。这时C:\mydata的图标就从文件夹的图标变成了MIDI文件的图标。
在资源管理器中双击该图标,系统会报告该MIDI文件内容错误,无法播放(系统将文件夹当作MIDI文件处理了),因此用户无法进入C:\mydata,也就无法查看该文件夹下的内容。这样做的好处是,我们可以成功的将我们的私人文件夹伪装成一个普通的MIDI文件。
惟一能够查看文件夹内容的方法是:在DOS窗口中,使用CD命令进入到该文件夹。
你可能会说,用户只要将该文件夹的文件扩展名去除,不就可以将保护的文件夹恢复出来了吗?不用担心,用户做不到这一步。即使用户在资源管理器的"工具"→"文件夹选项"→"查看"对话框中,去除对"隐藏已知文件类型的扩展名"选项的选择,使所有的文件都显示出扩展名。在资源管理器中,C:\mydata也不会出现扩展名。这样,用户就无法去除或者更改C:\mydata. {00022603-0000-0000-C000-000000000046}的CLSID部分。
如果想在资源管理器中正常地查看该文件夹里的内容,可以在DOS窗口中,将该文件夹重新改名为正确的名称。
该方法结合下面的限制运行程序的方法(限制运行DOS窗口),可以很有效的保护你的文件夹。
2.限制用户运行的程序(适用范围:Windows 9x/Me/NT/2000/XP)
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
(1)禁止用户通过"运行"来运行应用程序
通过"开始"菜单的"运行",用户可以输入命令来启动某个程序。对于那些不是EXE为扩展名的程序,也可以直接运行。如果不希望用户随意执行程序,可以将"开始"菜单中的"运行"项去除。
进入到注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\Explorer中,新建一个双字节值项NoRun,修改其值为1。
提示:除了"运行"外,可以在DOS窗口中手工输入命令来启动某个程序。
(2)禁止用户运行命令解释器和批处理文件(适用于Windows NT/2000/XP)
通过修改注册表,可以禁止用户使用命令解释器(CMD.exe)和运行批处理文件(BAT文件)。
进入到注册表项HKEY_CURRENT_USER\Software\Policies\ Microsoft\Windows\System\中,新建一个双字节值项DisableCMD,修改其值为2。则命令解释器和批处理文件都不能够被运行。如果只是禁止命令解释器的运行,而运行批处理文件的运行,则修改DisableCMD的值为1。
(3)禁止运行指定的程序
为了安全性起见,我们可能希望有些带有危险性的程序不让用户去运行。这可以通过注册表来实现。例如我们想禁止用户运行记事本(notepad.exe)和计算器(cal.Exe)。
首先在注册表项HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\Policies\Explorer中,新建一个双字节值项DisallowRun,修改其值为1,以允许我们定义禁止允许的程序,然后新建一个注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Explorer\DisallowRun,在其下新建两个字符串值项。第一个值项的名称为1,值为notepad.exe,第二个值项为2,值为calc.exe。如果想禁止更多的程序,可以依次建立名称为3、4等顺序往下排列的值项。修改注册表后立即生效。这时想通过"开始"菜单运行记事本和计算器程序,系统会提示不能进行此操作。
注意:用户在Windows NT/2000/XP的命令解释器(CMD.exe)窗口中,仍然可以通过输入"notepad.exe"运行记事本。这是因为DisallowRun禁止的只是通过资源管理器Explorer运行的程序,记事本不是通过Explorer启动的,所以就无法禁止了。如果不希望用户可以通过命令解释器运行程序,应该在DisallowRun中将命令解释器(CMD.exe)禁止。另外,此方式还有一个不安全之处,就是如果用户将记事本程序"notepad.exe"更改名称,如改成"note.exe",用户就可以运行它了。
(4)只允许运行指定的程序
为了限制用户运行程序,我们可以指定用户只能运行某些必须的程序。这种方式可以避免用户运行自己携带来的程序,有效地防范病毒地传播。这可以通过注册表来实现。
首先在注册表项HKEY_CURRENT_USER\Software\Microsoft \Windows\Current Version\Policies\Explorer下新建一个双字节值项RestrictRun ,修改其值为1,以允许我们指定可以运行的程序。
然后新建一个注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun,在其下新建两个字符串值项。第一个值项的名称为1,值为notepad.exe,第二个值项为2,值为calc.exe。如果想允许更多的程序,可以依次建立名称为3、4等顺序往下排列的值项。修改注册表后立即生效。这时想通过"开始"菜单和资源管理器运行其他的程序,系统会提示不能进行此操作。
提示:如果你没有允许注册表编辑器运行,你会发现你将无法恢复此方法所做的修改,因为无法用注册表编辑器来修改注册表了。在这种情况下,你可以将注册表编辑器程序的名称改变为你允许运行的某个程序的名称,这样你就可以运行起来注册表编辑器了。
注意:由于此方法的限制性非常大,所以请小心使用,尤其是避免没有允许任何程序运行这种情况。如果出现了这种情况,你将无法将此方法做的设定改变回来,因为你无法修改注册表。惟一的方法就是恢复修改前的注册表备份。
(5)禁止使用注册表编辑器
注册表是复杂和危险的,所以我们往往希望用户不要尝试着去修改注册表。通过修改注册表,我们可以禁止用户运行系统提供的两个注册表编辑器,Regedit.exe和Regedt32.exe。
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\System\下新建一个双字节值项DisableRegistryTools,修改其值为1。这样,用户就不能启动注册表编辑器了。
注意:使用此功能要小心,最好作个注册表备份,或者准备一个其他的注册表修改工具。因为你在禁止了注册表编辑器后,就不能再使用该注册表编辑器将值项改回了。
(6)禁止用户更改口令(适用于Windows NT/200/XP)
用户在"Windows安全窗口"中(同时按下Ctrl+Alt+delete键),可以单击"更改密码"来更改用户口令。通过修改注册表,可以禁止用户更改口令。
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\System下新建一个双字节值项DisableChangePassWord,修改其值为1。这样,"Windows安全窗口"中的"更改密码"按钮变成了灰色不可选状态,用户无法更改口令。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
(7)禁止用户锁定计算机(适用于Windows NT/2000/XP)
用户在"Windows安全窗口"中,可以单击"锁定计算机"来锁定计算机。通过修改注册表,可以禁止用户锁定计算机。
在注册表HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\System中新建一个双字节值项DisableLockWorkstation,修改其值为1。这样,"Windows安全窗口"中的"锁定计算机"按钮变成了灰色不可选状态,用户无法锁定计算机。
(8)禁止用户使用任务管理器(适用于Windows NT/2000/XP)
用户可以使用"Windows任务管理器"(Taskmgr.exe)来启动和结束本地进程、查看和管理其他计算机上的进程、改变进程的优先级。通过修改注册表,可以禁止用户使用任务管理器。
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\System\下新建一个双字节值项DisableTaskMgr,修改其值为1。这样,用户就无法启动任务管理器了。
3.限制用户可以查看的资源(适用范围:Windows 9x/Me/NT/2000/XP)
(1)隐藏指定的磁盘驱动器
如果我们不希望使用者查看某个驱动器的内容,可以在"我的电脑"和资源管理器中将该驱动器的图标隐藏起来。
在注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer中新建一个双字节值项NoDrives。
该值项共使用了从最低位(第0位)到第25位,共26个字位,分别代表驱动器A到驱动器Z。如果第0位为1,表示不显示驱动器A的图标,第3位为1,表示不显示驱动器D的图标,依此类推。例如我们想"我的电脑"中不显示任何驱动器的图标,可以修改"NoDrives"的值为"03ffffff"(第0位到31位全部为1)。修改后重启桌面使改动生效。
修改后,不只是"我的电脑",还包括"网上邻居"、资源管理器,任何标准的"打开"、"保存"文件的对话框,都不会出现指定驱动器的图标。虽然这些驱动器的图标不能出现,但是用户仍然可以访问这些驱动器。例如可以在资源管理器的地址栏中输入驱动器号,或者在DOS窗口中使用命令查看隐藏了的驱动器。
(2)禁止用户查看指定磁盘驱动器的内容
如果有一个驱动器中存放了重要的数据,我们不希望使用者查看该驱动器的内容,可以使用此方法来禁止查看该驱动器的内容。
在注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer中新建一个双字节值项NoViewOnDrive。该值项共使用了从最低位(第0位)到第25位,共26个字位,分别代表驱动器A到驱动器Z。如果第0位为1,表示禁止使用驱动器A,第3位为1,表示禁止使用驱动器D,依此类推。例如我们想禁止用户使用软盘驱动器A和B,以及驱动器D,可以修改"NoViewOnDrive"的值为"0000000b"(第0、1、3位的值为1)。修改后需要重启桌面使改动生效。
这时再进入到"我的电脑",双击驱动器D,系统会弹出一个消息框,告诉用户不能进行此操作。不只是"我的电脑",还包括"网上邻居"、资源管理器,任何标准的"打开"、"保存"文件的对话框,都不能对已经禁止的驱动器进行操作,虽然在"我的电脑"和资源管理器中,驱动器D的图标仍然存在。
提示:该方法只是禁止用户在"我的电脑"和资源管理器中访问受限制的驱动器,应用程序仍然可以访问被禁止的驱动器。
(3)登录时不显示上次使用者的用户名(适用于Windows NT/2000/XP)
默认情况下,在用户注册登录时,在用户名栏中显示着上次使用者的用户名。通过修改注册表,我们可以禁止系统显示上次使用者的用户名,以加强安全性。
在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Winlogon\中新建一个双字节值项DontDisplayLastUserName,修改其值为1。重新启动机器后,在用户注册画面中,不会显示上次使用者的用户名。
4.限制用户使用控制面板(适用范围:Windows 9x/Me/NT/2000/XP)
控制面板提供给用户一个直观的界面来更改Windows的部分参数,使Windows的界面和功能更符合自己的需要。不恰当的使用控制面板,会带来一些问题
(1)禁用整个控制面板
在注册表项项HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\Policies\Explorer\中新建一个双字节值项NoControlPanel。值为1表示禁止控制面板的使用,值为0或者值项不存在表示允许用户使用控制面板。
重启桌面使改动生效后,可以看到,"开始"菜单中"设置"中的"控制面板"项不见了,并且如图试图用别的方式访问"控制面板"中的项目,例如在桌面上单击鼠标右键来访问"显示",系统会弹出一个消息框,提示用户不能进行此操作。
(2)去除"控制面板"中的指定项目(适用于windows 2000/XP)
有时候我们想去除掉"控制面板"中的某些项目,以防止用户使用它们来进行设置,但是又想允许用户使用"控制面板"中的另外一些项目,这也是可以做到的。 在注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Policies\Explorer\中新建一个双字节值项DisallowCpl,并修改其值为1。然后新建一个注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowCpl,在该项下新建若干个字符串值项,形式为"序号=控制面板项对应的文件名"。例如想去除控制面板中的"显示"和"系统"两项,可以在该项下新建两个值项"1"和"2",值分别为"desk.cpl"(显示项对应的文件)和sysdm.cpl(系统项对应的文件)。重启桌面使改动生效。这时再进入到"控制面板"中,可以看到,"显示"项和"系统"项已经不见了。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
(3)指定"控制面板"中显示的项目(适用于Windows 2000/XP)
如果我们想去除掉"控制面板"中的大部分项目,只允许用户使用几个项目,则可以使用本方法。"控制面板"中只显示用户指定的项目,对于没有指定的项目则不显示。
在注册表项HKEY_CURRENT_USER\Software\ Microsoft\Windows\Current Version\Policies\Explore\中新建一个双字节值项RestrictCpl,修改其值为1,然后新建一个注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explore\RestrictCpl,在该项下新建若干个字符串(REG_SZ)值项,形式为"序号=控制面板项对应的文件名"。例如只允许用户使用控制面板中的"显示"和"系统"两项,可以在该项下新建两个值项"1"和"2",值分别为"desk.cpl"(显示项对应的文件)和sysdm.cpl(系统项对应的文件)。重启桌面使改动生效。这时再进入到"控制面板"中,可以看到,整个控制面板中只有"显示"项和"系统"项。
注意:使用去除控制面板中的指定项目和指定控制面板中显示的项目都可以定制控制面板中项目的显示,但是这两个方法有可能发生冲突。如果发生冲突,则去除控制面板中的指定项目方法优先。 (4)去除"系统"中的"设备管理"标签(适用于Windows 9x/Me)
进入到注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System中,新建一个双字节的值项NoDevMgrPage,修改其值为1。这时再进入到"控制面板"中的"系统"项,可以看到"设备管理"标签已经不见了。
(5)去除"系统"中的"硬件配置"标签(适用于Windows 9x/Me)
进入到注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下,新建一个双字节的值项NoConfigPage,修改其值为1。这时再进入到"控制面板"中的"系统"项,可以看到"硬件配置"标签已经不见了。
(6)去除"系统"中的"性能"标签里的"文件系统"按钮(适用于Windows 9x/Me)
进入到注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下,新建一个双字节的值项NoFileSysPage,修改其值为1。这时再进入到"控制面板"中的"性能"项,可以看到"性能"标签中的"文件系统"按钮已经不见了。
(7)去除"系统"中的"性能"标签里的"虚拟内存"按钮(适用于Windows 9x/Me)
进入到注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下,新建一个双字节的值项NoVirtMemPage,修改其值为1。这时再进入到"控制面板"中的"性能"项,可以看到"性能"标签中的"虚拟内存"按钮已经不见了。
(8)禁用"显示"项
我们可以禁止使用"控制面板"中的显示项。虽然"显示"项仍然出现在"控制面板"中,但是用户不能使用。在注册表项HKEY_CURRENT_USER\ Software\Microsoft\Windows\Current Version\Policies\System\中新建一个双字节值项NoDispCPL,修改其值为1。这时进入"控制面板",双击"显示"项,系统会出现一个消息框提示用户不可以进行此操作。
(9)去除"显示"项中的"背景"标签
在注册表项HKEY_ CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\system\中新建一个双字节值项NoDispBackgr oundPage,修改其值为1。
(10)禁止"显示"项里的"背景"标签(适用于Windows 2000/XP)
在注册表项HKEY_ CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop\中新建一个双字节值项NoChangingWallPaper,修改其值为1。
(11)去除"显示"项中的"屏幕保护程序"标签
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\system\中新建一个双字节值项NoDispScrSavPage,修改其值为1。
(12)决定屏幕保护程序是否使用密码保护(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Policies\ Microsoft\Windows\Control Panel\Desktop\中新建一个双字节值项ScreenSaverIsSecure,修改其值为1。
(13)去除"显示"项中的"外观"标签
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\system\中新建一个双字节值项NoDispAppearancePage,修改其值为1。
(14)去除"显示"项中的"设置"标签
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\system\中新建一个双字节值项NoDispSettingsPage,修改其值为1。
(15)禁止删除打印机
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Explorer\中新建一个双字节值项NodeletePrinter,修改其值为1。
(16)去除"打印机"中的"添加打印机"项
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Explorer\中新建一个双字节值项NoAddPrinter",修改其值为1。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
(17)禁止"添加打印机向导"中的"浏览网络打印机"项(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Policies\ Microsoft\Windows NT\Printers\Wizard\中新建一个双字节值项Downlevel Browse,修改其值为1。
如果用户想添加网络打印机荒苁淙胪绱蛴』腢RL。
(18)去除"添加/删除"项(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall\中新建一个字符串值项NoAddRemovePrograms,修改其值为1。
(19)去除"添加/删除"项中的"更改或删除程序"项(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Uninstall\中新建一个双字节值项NoRemovePage,修改其值为1。
(20)去除"添加/删除"项中的"添加新程序"项(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Uninstall\中新建一个双字节值项NoAddPage,修改其值为1。
(21)去除"添加/删除"项中的"添加/删除Windows组件"项(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Uninstall\中新建一个双字节值项NoWindowsSetupPage,修改其值为1。
(22)去除"添加/删除"项目中"添加新程序"中的"从光盘或软盘添加程序"(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Uninstall\中新建一个双字节值项NoAddFromCDor Floppy,修改其值为1。
(23)去除"添加/删除"项目中"添加新程序"中的"从Microsoft添加程序"(适用于Windows 2000/XP)
在注册表项HKEY_CURRENT_USER\Software\Microsoft\ Windows\Current Version\Policies\Uninstall\中新建一个双字节值项NoAddFromInternet,修改其值为1。
5.防范黑客攻击(适用范围:Windows 9x/Me/NT/2000/XP)
注册表中有些参数,设置合适的话可以防范一些黑客技术的攻击。DoS(拒绝服务)攻击是一种常见的黑客攻击方式,其中SYN淹没攻击是DoS中比较常见的。我们在这里给出一个防范SYN攻击的设置方法。
(1)减小等待SYN-ACK包的时间
TCP在发送SYN-ACK包后,首先等待3秒钟,如果仍然没有回应,则将时间加大一倍,从3秒增大到6秒,再重发一次SYN-ACK,然后继续等待回应。重发的次数定义在注册表中的一个双字节值项TcpMaxConnectResponseRetransmissions 里,该值项位于注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters中。默认值为3,表示重发次数为3次,先等待3秒后发送一次,然后等待6秒后发送一次,然后等待12秒发送一次,最后等待24秒,如果仍然接收不到回应,不再继续发送SYN-ACK,而是清除此次连接,并释放所有资源。这样总共经过了45秒钟。值为2表示重发次数为2次,总共的耗费时间为21秒,值为1表示重发次数为1次,总共的耗费时间为9秒。0表示不重发SYN-ACK,耗费时间为3秒。耗费时间越短,SYN攻击造成的影响就相应的要小一些。此值项的默认值为3次。如果系统容易受到SYN淹没攻击,可以将此值项修改为2。 (2)增大NetBT的连接块增加幅度和最大数目
NetBT(基于TCP/IP的NetBIOS)使用139号TCP端口,一般用在微软网络中,例如文件和打印服务。在建立连接时,如果BetBT发现可用的连接块数目小于2个,会自动的再分配可用连接块。
NetBT每次增加的连接块的数目定义在注册表中的双字节值项BacklogIncrement中,该值项位于注册表项注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\NetBt\Parameters下。默认值为3,最小值为1,最大值位20。增大此值可以在有众多连接时提升性能。每个连接块消耗87个字节。
NetBT最多可以使用的连接块的数目定义在注册表项中双字节值项MaxConnBackLog中,默认为1000个,最大值可以取到40000个。可以适当的增大此参数的值以允许更多的同时连接。
(3)配置动态Bakclog(适用于Windows NT/2000/XP)
对于使用Sockets的Windows服务,如FTP,可以通过配置动态Backlog来提升在网络繁忙时的性能。使用动态Bakclog,系统会预先分配一定的资源用于建立连接,这样就省去了给连接分配资源的时间和CPU消耗。如果需要再增加资源,可以一次性的增加若干个连接所需的资源空间。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
在注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters中新建下面的双字节值项:
EnableDynamicBacklog,该值项的默认值为0,表示是否允许动态Backlog。默认值为0。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示允许动态Backlog。
MinimumDynamicBacklog,该值项的默认值为0,表示动态Backlog分配的自由连接的最小数目。当自由连接数目低于此数目时,将自动的分配自由连接。默认值为0,对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20。
MaximumDynamicBacklog,该值项的默认值为0,表示定义最大"准"连接的数目。"准"连接包括自由连接和半连接。对于网络繁忙或者易遭受SYN攻击的系统,应该设置此值,大小取决于内存的多少。一般来说,每32M内存最大可以增加5000个。
DynamicBacklogGrowthDelta,该值项的默认值为5,表示定义每次增加的自由连接数目。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为10。
(4)启用SYN淹没攻击保护特性(适用于Windows 2000/XP)
Windows 2000/XP针对SYN淹没攻击提供了一个叫做SYN淹没攻击保护的特性。当出现了SYN淹没攻击的征兆时,Windows 2000/XP自动降低对那些无法确认的连接请求的响应时间。
在注册表项HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中新建下面的双字节值项:
SynAttackProtect,该值项的默认值为0,表示定义是否允许SYN淹没攻击保护特性。保证该值为1,表示允许启用SYN淹没攻击保护特性。
TcpMaxConnectResponseRetransmissions,该值项的默认值为3,表示定义了对于连接请求回应包的重发次数。如果该值为1,则SYN淹没攻击不会有效果,但是这样会造成连接请求失败几率的升高。SYN淹没保护特性只有在该值大小大于或等于2时才会被启用。该值的默认值为3。
以上两个值项定义了是否允许SYN淹没攻击保护。下面三个值项则定义了激活SYN淹没攻击保护特性的条件。当满足下面三个值项定义的条件之一时,系统会自动激活SYN淹没攻击保护。
TcpMaxHalfOpen,该值项的默认值为100或者500,表示定义了能够处于SYN_RECEIVED状态的TCP连接的数目。由于SYN淹没攻击通常会造成大量的SYN_RECEIVED状态的TCP连接,因此保护特性将该值作为SYN淹没攻击发生的一个征兆。当处于SYN_RECEIVED状态的TCP连接的数目超过该值项的定义时,系统认为SYN淹没攻击发生了,自动启用保护特性。
对于Windows 2000 Server,该值项默认值为100。对于Windows 2000 Professional,该值项默认值为500。Professional之所以比Server的值高,是因为Professional通常不用作服务器,也就不会受到SYN淹没攻击。
TcpMaxHalfOpenRetried,该值项的默认值为80或者40,表示定义了在重新发送连接请求后,仍然处于SYN_RECEIVED状态的TCP连接的数目。当这种状态的TCP连接的数目超过该值项的定义时,系统认为SYN淹没攻击发生了,自动启用保护特性。
对于Windows 2000 Server,该值项默认值为80。对于Windows 2000 Professional,该值项默认值为400。
TcpMaxPortsExhausted,该值项的默认值为5,表示定义了系统拒绝连接请求的次数。当系统保留的连接端口都被使用掉时,系统将拒绝所有的连接请求。SYN淹没攻击通常会发生这种情况,因此保护特性将该值作为SYN淹没攻击发生的一个征兆。当被拒绝的连接请求的数目超过该值项的定义时,系统认为SYN淹没攻击发生了,自动启用保护特性。
7.检查Windows启动时的程序(适用范围:Windows 2000/XP)
在Windows环境下,由于病毒必须获得CPU的控制权,因此很多病毒都需要在Windows启动后,自动地运行起来。另一方面,越来越多的病毒采用了高级语言的形式,象宏病毒,采用的是VB语言,本身不能直接由CPU来执行,必须由相关程序解释执行,因此它们必须在操作系统正常启动后,才能加载自身,进行病毒传播。因此说,很多病毒必须在Windows启动后自动地运行起来,并且是依赖于Windows的自动启动程序的功能。这是这些病毒的一个特点,也是一大弱点。我们可以根据这个特点,分析Windows启动时有那些程序自动运行,通过检查这些程序来防范病毒的侵袭。
(1)注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
该项下存放了Windows NT/2000/XP的服务程序。下面的每一个子项对应于一个服务:
ImagePath值项存放了该服务的程序文件路径。这些服务都有一个Start值项。值为0,表示由核心装载器装载;值为1,表示由I/O子系统装载。Start值为0和1的,都是非常低级和关键的Windows服务,它们必须正常启动,Windows NT/2000/XP才能继续启动。通常病毒不会将自己放在这里面,因为这时候WindowsNT/2000/XP只装载了核心部分,只有最基本的功能。Start值为2,表示自动启动,值为3,表示手工启动,值为4,表示禁止启动。这三类服务,可以在"控制面板"→"管理工具"→"服务"中查看到。
我们需要检查的是,那些Start值为2的服务,其对应的程序文件(ImagePath值项定义)是否可疑。
(2)注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\Session Manager
该项下存放了会话管理器(Smss.exe)的信息。在Windows NT/2000/XP的内核启动阶段,需要启动该项下定义的几个程序。在REG_MULTI_SZ类型的值项BootExecute中,定义了会话管理器装载服务前需要运行的程序。默认值为AutoCheck autochk *和Dfsinit。该默认值表示运行磁盘检查程序,以及启动DFS文件系统的初始化程序。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
我们需要检查的是,值项BootExecute存放的是否是默认的执行文件,是否还定义了其他的执行程序。
(3)注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Userinit
该值项类型为字符串值,定义了用户注册进入时执行的初始化程序。在用户注册时,注册管理程序(Winlogon)启动该初始化程序,默认值是Userinit.exe。该程序首先运行注册脚本,建立网络连接,然后启动用户界面程序(Explorer.exe)。用户可以替换该初始化程序为自己的初始化程序(当然,病毒也可以做到)。一般地,用户自己的初始化程序可以在处理完自己需要进行的工作后,再调用Userinit.exe程序即可。
我们需要检查的是,Userinit值项的值是否是Userinit.exe。同时检查\Winnt\System32下的Userinit.exe文件的大小和时间是否是正常的。
(4)注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell
该值项类型为字符串值,定义了用户界面程序,默认值为Explorer.exe。正常情况下,注册管理程序(Winlogon)启动Userinit定义的初始化程序,该初始化程序会启动用户界面程序,因此不需要运行Shell值项定义的程序。如果注册管理程序没有能成功启动Userinit定义的初始化程序,则注册管理程序会过来启动该Shell值项定义的用户界面程序。
我们需要检查的是, Shell值项的值是否是Explorer.exe。
(5)注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\System(适用于Windows NT)
该值项类型为字符串值,该值项中存放了安全管理器程序,默认值为Lsass.exe。安全管理器就是Windows NT启动时,或者屏幕保护后,要求输入用户和密码的画面。用户可以替换该安全管理器程序。
我们需要检查的是System值项的值是否是Lsass.exe。
(6)注册表项HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\ CurrentVersion\Policies\Explorer\Run
在该项下可以有若干个字符串类型的值项,每个值项的名称从1开始,值为程序或者文档的名称。在用户注册进入Windows时,该项下定义的程序将被启动起来。例如该项下有两个值项,第一个是1,值为Notepad.exe,第二个是2,值为C:\readme.doc,则在用户注册进入Windows 2000时,系统会首先运行起Notepad.exe程序,然后会使用DOC的关联程序打开C:\readme.doc文档。
我们需要检查的是,如果定义了自动启动程序,则查找该程序是哪个软件对应的,是否为可疑程序。默认情况下,该注册表项下应该为空。
(7)注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer\Run
该项与HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer\Run的作用一样,不同之处在于,由于它位于HKEY_LOCAL_MACHINE下,所以它将应用于所有的用户。在启动顺序上,系统首先启动HKEY_LOCAL_MACHINE下的Run中的程序,再去启动HKEY_CURRENT_USER下Run中的程序。
(8)注册表项HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx子项(适用于Windows 9x/Me/NT/2000/XP)
由于是位于HKEY_CURRENT_USER下,因此该项只适用于当前这个用户,不适用于其他的用户。在用户注册进入Windows系统时,自动地运行该项下定义的程序或文档。其中Run子项中定义了每次系统启动时都需要运行的程序,值项类型是字符串值,值项的名称是该运行程序的说明,值项的值是程序的名称;RunOnce子项中定义了只运行一次的程序,在该项下的值项中定义的程序运行起来后,该项下的值项就会被删除掉,这通常用于程序的安装过程;RunEx和RunOnceEx的作用和Run、RunOnce是一样的,是Run、RunOnce的扩充形式。
(9)注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx子项(适用于Windows 9x/Me/NT/2000/XP)
该项和HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx作用一样,不同之处在于,由于它位于HKEY_LOCAL_ MACHINE下,所以它将应用于所有的用户。在启动顺序上,系统首先启动HKEY_LOCAL_MACHINE下定义的启动项目,再去启动HKEY_CURRENT_USER下定义的启动项目。
我们需要检查的是,对于默认情况以外定义的程序,需要检查其对应的软件。很多软件将自动启动程序放在注册表中的这个位置。例如Norton Antivirus防毒软件,就会在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run下新建一个值项NPS Event Checker,值为C:\PROGRA~1\Navnt\ npscheck.exe。
下表中列出了默认情况下,Windows系统中Run下的自动运行项目。
(10)检查非注册表部分
首先检查启动文件和磁盘引导扇区。对于Windows 9x/Me,启动文件是启动盘目录下的IO.sys和Command.com文件。同时,还包括Autoexec.bat文件中定义的程序文件,以及Config.sys文件中装载的程序文件。对于Windows NT/2000/XP,启动文件是启动盘目录下的Ntldr,Ntdetect.com、Ntbootdd.sys(如果boot.ini文件使用SCSI语法)、Bootsect.dos(如果使用了多重启动,对应于启动到DOS环境),以及Winnt目录下的Ntoskrnl.exe(核心程序文件)和Hal.dll(硬件抽象层)。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
其次,对于Windows 9x,还需要检查Win.ini文件和System.ini文件。Win.ini文件中的"run="和"load="行,定义了Windows 9x启动时需要装载的程序。
最后,需要检查"开始"菜单中"程序"中的"启动"程序组,"启动"程序组中存放了Windows正常启动起来后,需要启动的程序。
8.禁止旧版本的"自动运行"程序列表(适用范围:Windows 2000/XP)
注册表项HKEY_LOCAL_MACHINE_\Software\Microsoft\Windows\CurrentVersion\Run和HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce下存放的是"自动运行"的程序列表,它们是旧版本的"自动运行"程序列表,在Windows95/98/NT中就已经有了。在注册表中有两个值项,可以禁止这两个旧版本列表起作用,替代它们的是RunEx和RunOnceEx注册表项。
这两个值项位于注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下。
9.禁止远程访问光盘和软盘(适用范围:Windows NT/2000/XP)
在C2级别的安全要求中,必须对可移动介质的安全作保护,它要求当本地用户在使用计算机时,光盘和软盘称为本地用户的专有资源,网络上的其他用户,包括系统管理员,都不能够访问光盘和软盘。这是因为此时使用的可移动介质,通常是本地用户私人的,因此不应该给其他人看到。 下表的值项存放在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon中。
10.设定口令的最小长度(适用范围:Windows 9x/Me/NT/2000/XP)
默认情况下,口令可以设置为空。为了加强安全性,我们可以强行指定口令的最小长度。
在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network下,创建二进制类型的值项MinPwdLen,并修改其值为口令的长度,例如6。这样,用户在设定口令时,最少要设定6位的长度。
四、提升Windows系统性能
通过注册表,我们可以定制Windows的功能,使之更加符合我们的习惯和需求。
1.定制Windows的登录(适用范围:Windows 9x/Me/NT/2000/XP)
(1)开机后自动登录
为了使用Windows NT/2000/XP,我们必须输入一个用户名称和用户口令来登录。在Windows 9x/Me中,如果登录方式设置为"Microsoft网络登录",在进入Windows时,也需要输入用户名和口令,否则将不能访问网上邻居中的计算机。
为了方便起见,我们可以将用户名和用户密码存放到注册表中,这样Windows启动时,自动使用注册表中的用户名和用户密码来登录,而不用用户手工输入。
对于Windows NT/2000/XP,在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon下新建值项。对于Windows 9x/Me,在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows \CurrentVersion\Winlogon下新建值项。下表中详细列出新建的值项。
(2)在登录前显示自定义的信息
我们可以在Windows启动之前显示一些信息,以给用户一些提示或是警告。
对于WindowsNT/2000/XP,在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon下新建值项。对于Windows 9x/Me,在注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows \CurrentVersion\Winlogon下新建值项。下表中详细列出新建的值项。
(3)必须使用有效用户注册(适用于Windows 98)
在Windows 98中,当出现输入用户名称和密码的画面时,可以单击"取消"按钮,或者按下ESC键,跳过这一步直接进入到Windows中。通过修改注册表,可以禁止这种未授权的使用,而要求只有在Windows98中设置的用户才可以进入。
在注册表项HKEY_LOCAL_MACHINE\Network\Logon下,新建一个双字节字值项MustBeValidated,修改其值为1。这样,在下次启动时,必须输入有效的用户名和用户密码才可以进入到Windows 98中。
注意:在Windows 98 SE中,该修改方式不适用。如果设置了该选项,Windows 98 SE将从域服务器上去验证该用户,因为找不到域服务器,因此无法正常登录到Windows 98 SE中。
(4)启动时不要求输入口令(适用于Windows 9x/Me)
Windows 9x/Me启动时往往要求输入用户名和口令。如果只是自己使用,虽然可以按ESC键或者"取消"按钮跳过这一步,但还是挺麻烦。
在作此修改前请首先将网络登录方式改为Windows登录:进入控制面板中的网络项,将"主网络登录"方式改为Windows登录。
然后将默认用户的密码改为空。将用户的密码设置为空可以采用如下方法:
方法1:通过修改注册表来更换用户名
在Windows 9x/Me中,上次使用者的用户名存放在注册表的HKEY_LOCAL_MACHINE\Network\Logon下,名称Username。我们可以将这个用户名修改为一个新的用户名。重新启动后,Windows会认为该用户是新的用户,要求输入用户口令。不要输入口令,直接按"确定"按钮。这样,在下次启动时,就不会要求输入用户名和口令。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
方法2:删除口令文件
进入到C:\windows目录下。找到该用户的口令文件。如用户名称为lijin,则口令文件为lijin.pwl。删除该文件。重新启动Windows 9x,Windows 9x会认为该用户是新的用户,要求输入用户口令。不要输入口令,直接按"确定"按钮。这样,在下次启动时,就不会要求输入用户名和口令。
方法3:注册新用户
首先"开始"菜单中选择"注销",在出现的注册画面中,使用新的用户名,并且不输入口令,直接按"确定"按钮。Windows会自动生成该用户的信息。在下次启动时,系统会使用新的用户注册进入Windows。
方法4:修改注册表禁止使用口令文件
注册表中的一个值项控制着是否使用口令文件(PWL文件)。如果禁止使用口令文件,则Windows启动时不会要求输入口令。在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Policies\Network下,新建一个双字节值项DisablePwdCaching,修改其值为1。重新启动Windows后,Windows将不会生成和使用口令文件。即使用户设了口令,在Windows启动时,也不会要求输入用户口令。
提示:如果在注册表中修改了此项,禁止了口令文件,并且登录方式选择的是"Microsoft网络用户"或者"Netware网络用户",在Windows 9x/Me启动时,仍然会出现要求输入用户口令的画面,不过即使输入的用户口令不对,也可以进入Windows,只是不能注册到"Microsoft网络"或"Netware网络"上。
方法5:强迫Windows启动时不进行登录 默认情况下,只要安装了网络项,或者Windows口令非空,Windows启动时会出现登录注册的画面,要求用户进行注册进入系统。在注册表中有一个值项控制着系统启动时是否进行登录。在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Network\Real Mode Net下,新建一个双字节值项autologon。修改其值为0。
提示:此方法对于Microsoft网络用户登录、Netware网络登录和Windows登录三种登录方式都适用。
2.加快拨号上网的速度(适用于Windows 9x)
(1)去除不需要的协议和服务
选定一个拨号连接,单击右键,可以看该拨号连接的属性。通常通过拨号网络建立一个连接后,该连接绑定了NetBEUI和IPX/SPX兼容协议,并且联系着微软网络,如果该拨号连接只是为了上因特网,则可以将这些不必要的协议和服务去掉,只保留TCP/IP协议,以加快登录速度和传输速度。
(2)增大串口缓冲和通信速度
在Windows目录下找到System.ini文件并编辑它,在其[386Enh]这一行下面加入"COM2Buffer=1024"行。如果调制解调器不是安装在串口2,而是安装在串口1,则改为"Com1Buffer=1024"即可。
在Windows目录下找到Win.ini文件并编辑它,在其[ports]部分找到"COM2:= 9600,n,8,1,x"行,修改为"COM2:=38400,n,8,1,x"。如果调制解调器不是安装在串口2,而是安装在串口1,则修改"COM1:=9600,n,8,1,x"行为"COM1:=38400,n,8,1,x"。
(3)增大接收缓冲区
设置调制解调器的属性,将其接收缓冲区调到最大。
(4)增大系统的文件名和路径的缓冲
在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\FS Templates\Desktop下,新建两个双字节值项。一个是NameCache,定义了存放访问过的文件名的缓冲,建议从32修改为128。一个是PathCache,定义了存放访问过的文件的路径的缓冲,建议从677修改为4096。
(5)调整拨号网络适配器的TCP/IP参数
首先进入到注册表项HKEY_LOCAL_MACHINE\Enum\Root\Net下。在该项下有形式为00xx的子项。进入到各个00xx子项下,查找值项DeviceDesc是否为"拨号网络适配器"。如果是,在该子项下还有一个Binding子项,进入该子项,记下该子项下的MSTCP\00xx的值。
按照上一步找到的MSTCP\00xx值,进入到注册表项HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\00xx下。记下其下值项Driver的值,形式为NetTrans/00xx。
按照上一步找到的NetTrans/00xx的值,进入到注册表项HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\Class\NetTrans\00xx下。修改REG_SZ值项MaxMTU的值从1500到576,因为1500是针对局域网的,而576是Internet上的标准。修改REG_SZ值项MaxMSS的值为536。
(6)调整TCP/IP协议的参数
修改下列值项的值(字符串值)。这些值项位于注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP下:
DefaultRcvWindow,其默认值为8129,该值为接收缓冲区的大小,一般等于Modem的传输速度。可以按如下算法计算.假设Modem速度为28.8K,则传输率为(不考虑数据压缩)28800/9=3200。考虑到DefaultRcvWindow应该是MSS(一般值为536)的整数倍,则应该取值为2680。不考虑Modem的数据压缩,14.4K、28.8K、36.6K和56K应该分别对应于1072、2680、3752、5896。如果考虑到Modem的数据压缩功能,可以再加大20%~50%,但注意,仍然应该为MSS的整数倍。如果Modem速度快,因特网接入线路质量好,可以再适当的加大该值。默认值为8192。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
标签: