深入 WIN2000 组册表 (6)
深入 WIN2000 组册表 (6)
硬件和系统
简介
Windows 2000是由大量的系统组成的,它们协同工作为操作系统提供各种功能。这些系
统包括硬件抽象层(Hardware Abstraction Layer, H A L ),运行在Wi n 3 2上的Wi n 1 6 ( W O W )系统,
以及各种系统服务(系统管理员添加到操作系统中的应用程序, Windows 2000非严格的组成部
分以及随该部分提供的应用程序)。这些系统中的任意一种都有许多重要的注册表条目,本章
将集中对它们进行介绍。
硬件抽象层
每一种操作系统,无论它是怎样设计的,必须有某种与真实硬件相连接的方法,以便软
件能够使用它。对于一个写屏幕、保存文件到磁盘中,或者从鼠标获取输入的应用程序来说,
它必须能够与计算机硬件交互。在Windows 2000中,提供这种能力的设备驱动程序的集合被
称为硬件抽象层。
H A L提供了除简单地初始化设备驱动程序之外的许多额外的服务。这些服务包括:
创建和维护串行和总线型鼠标的设置,包括启动参数、事件队列的大小和分辨率。
维护非S C S I (小型计算机系统接口)硬盘驱动器的信息,包括大小、磁头数,磁道数和柱
面数。
为串行口和并行口创建标识字符串,并维护其I R Q和访问设置。
处理S C S I调试的能力,包括断开、同步化传输、多重连接和标记连接。
为操作系统本身提供安装和系统文件路径,还有其版本和安装日期。
WOW
Windows NT提供了运行M S - D O S和Windows 3.x应用程序的能力,而Windows 2000继承
了这种能力。运行M S - D O S和Windows 3.x应用程序的技术称为W O W ( Win16 On Wi n 3 2 )和
D O S虚拟机(virtual machine,VM)。
1. MS-DOS
要运行M S - D O S应用程序, Windows 2000会在启动时载入A u t o e x e c . b a t和C o n f i g . s y s的一
份拷贝。这些文件中的问题不会影响Windows 2000的成功启动,但是会影响运行在Wi n d o w s
2 0 0 0中的M S - D O S应用程序。
2. WOW和INI文件
要运行Windows 3.x应用程序,Windows 2000读取它在首次安装或者将Windows 3.x应用
程序安装到Windows 2000注册表的过程中发现的每个I N I文件的拷贝。有多种方法可以在新用
户每次登录时强迫根据I N I源文件刷新其注册表值。W O W以系统服务的方式运行。这样做存
在一些缺点,因为它可能需要“杀死”Windows 3.x应用程序的幽灵才允许Windows 2000关闭。
修改注册表能够改正这些缺点。
其它系统服务
服务是作为Windows 2000操作系统的一部分执行的应用程序。某些服务,例如I n t e r n e t信
息服务器(Internet Information Server)和SQL Server,是M i c r o s o f t提供的。而其它一些服务是由
第三方开发人员编写、系统管理员为了某种需求而使用的。无论服务来自什么地方,它都是用
同一种方法管理的—放在启动队列中,并按它在队列中的顺序执行。如果遇到问题,就会弹
出错误消息框。在所有服务都启动后,操作系统就会运行其启动组中的任意一种应用程序。最
后,当操作系统准备关闭时,会提供一个固定的超时值,如果系统管理员需要,则取消关闭。
当某服务启动失败时进行错误检测
当Windows 2000在启动某服务过程中遇到问题时, Windows 2000会期望系统管理员告诉
它该怎么做。要告诉Windows 2000在遇到这种问题时进行错误检测,应按如下步骤修改注册
表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口
中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s子项。接着,找到
想要启用错误检测的服务。单击该服务选取它,在右窗口中显示其值。
4) 定位到值E r r o r C o n t r o l的条目。使用D Wo r d编辑器将E r r o r C o n t r o l的值改为3,强迫在服
务启动失败时进行错误检测。
当某服务启动失败时切换到最新且正确的注册表拷贝
当Windows 2000在启动某服务过程中遇到问题时, Windows 2000会期望系统管理员告诉
它该怎么做。要告诉Windows 2000 在遇到这种问题时切换到L K G (最新且正确的,即L a s t
Know Good)注册表备份拷贝,应按如下步骤修改注册表:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Wi n d o w s2 0 0 0的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框
并单击“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s子项。接着,找到
想要启用L K G切换的服务。单击该服务选取它,在右窗口中显示其值。
4) 定位到值E r r o r C o n t r o l的条目。使用D Wo r d编辑器将E r r o r C o n t r o l的值改为2,强迫在服
务启动失败时进行L K G切换。
当某服务启动失败时生成错误消息
当Windows 2000在启动某服务过程中遇到问题时, Windows 2000会期望系统管理员告诉
它该怎么做。要告诉Windows 2000在遇到这种问题时显示错误消息,应按如下步骤修改注册
表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s子项。接着,找到
想要启用错误消息显示的服务。单击该服务选取它,在右窗口中显示其值。
4) 定位到值E r r o r C o n t r o l的条目。使用D Wo r d编辑器将E r r o r C o n t r o l的值改为1,强迫在服
务启动失败时进行错误消息显示。
忽略服务启动失败时的错误消息
当Windows 2000在启动某服务过程中遇到问题时, Windows 2000会期望系统管理员告诉
它该怎么做。要告诉Windows 2000忽略这种服务启动失败的错误,应按如下步骤修改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s子项。接着,找到
想要禁止错误消息显示的服务。单击该服务选取它,在右窗口中显示其值。
4) 定位到值E r r o r C o n t r o l的条目。使用D Wo r d编辑器将E r r o r C o n t r o l的值改为0,强迫在服
务启动失败时禁止错误消息显示。
控制Windows 2000服务启动的顺序
尽管通常是由Windows 2000本身确定其服务启动顺序的,但是系统管理员可以修改这种
顺序。要做到这一点,可以按照如下步骤修改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Control\ ServiceGroupOrder
子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值L i s t的条目。使用多重字符串编辑器检查某个服务组的载入顺序。更改了列表
中组的顺序就更改了驱动程序载入的顺序和服务启动的顺序。
6.2.6 确定鼠标使用的是串行还是总线型连接
系统管理员可以按照如下步骤检查注册表,确定鼠标使用的是串行还是总线型连接:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Windows 2000
的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框并单击
“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到H A R D WARE\Description\System\ MultifunctionAdapter
\ [X] \ P o i n t e r C o n t r o l l e r \ [X] \ P o i n t e r P e r i p h e r a l \ 0,其中[X]表示包含子项的数目(通常是0,但也可
以更高)。单击该子项选取它,在右窗口中显示其值。
4) 找到I d e n t i f i e r类型为R E G _ S Z的值。如果它为空,则该鼠标是总线型鼠标;如果
I d e n t i f i e r条目包含一个值,那么该鼠标是串行鼠标。
获取非SCSI硬盘的信息
尽管某些Windows 2000计算机使用S C S I (小型计算机系统接口, Small Computer System
I n t e r f a c e )硬盘,但是现在还有一些计算机使用大容量的I D E或E I D E硬盘。这些硬盘可能需要
更改其B I O S设置。要获取该设备的详细硬件信息,可按照下面的步骤进行操作:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Windows 2000
的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框并单击
“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到H A R D WA R E \ D e v i c e m a p \ A t D i s k \ C o n t r o l l e r [#]\ Disk[#],
其中C o n t r o l l e r [#]和D i s k [#]是I D E控制卡被赋予的编号和该卡上指定硬盘的编号。单击该子项
选取它,在右窗口中显示其值。表6 - 1中显示的值反映出指定硬盘的硬件能力。
表6-1 非S C S I硬盘的值
值信息
Firmware revision R E G _ S Z值,B I O S代码的修订版本号
Id e n t i f i e r R E G _ S Z值,生产厂商的磁盘标识符
Number of cylinders R E G _ D W O R D值,驱动器柱面数
Number of heads R E G _ D W O R D值,驱动器磁头数
Sectors per track R E G _ D W O R D值,驱动器一个磁道的扇区数,以十六进制表示,
通常为5 1 2
设置并行口的标识字符串
你可以更改系统赋予指定并行口的标识符。要做到这一点,可以按如下步骤修改注册表
(记住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到H A R D WA R E \ D e v i c e m a p \ P a r a l l e l \ p o r t s子项。单击该子项
选取它,在右窗口中显示其值。
4) 定位到值P a r a l l e l [X] :的条目,其中[X]是你想要更改的端口号。使用字符串编辑器将
P a r a l l e l [X] :的值改为新的标识符(缺省值为L P T [X] : )。
设置并行口的访问级别
你可以更改系统赋予指定并行口的访问级别。要做到这一点,可以按如下步骤修改注册
表(记住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\Current ControlSet\Services\Parallel\Parameters
子项。单击该子项选取它,在右窗口中显示其值。
4) 如果名为P a r a l l e l [X] : ( [X]是你感兴趣的端口号)的条目不存在,则输入一个。然后,为
这个子项添加一个名为D i s a b l e P o r t的值条目(如果该值不存在),类型为R E G _ D W O R D。要允
许在端口初始化之后对其进行访问,将D i s a b l e P o r t设为0;要禁止在端口初始化之后对其进行
访问,将D i s a b l e P o r t设为1。
设置并行口的IRQ值
你可以更改系统赋予指定并行口的访问级。要做到这一点,可以按如下步骤修改注册表
(记住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ P a r a l l e l \ P a r a m e t e r s
子项。单击该子项选取它,在右窗口中显示其值。
4) 如果名为P a r a l l e l [X] : ( [X]是你感兴趣的端口号)的条目不存在,则输入一个。然后,为
这个子项添加一个名为I n t e r r u p t的值条目(如果该值不存在),类型为R E G _ D W O R D。将
I n t e r r u p t设置为所期望的I R Q值。
设置串行口的标识字符串
你可以更改系统赋予指定串行口的标识符。要做到这一点,可以按如下步骤修改注册表
(记住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到H A R D WA R E \ D e v i c e m a p \ S e r i a l \ p o r t s子项。单击该子项
选取它,在右窗口中显示其值。
4) 定位到值Serial [X] :的条目,其中[X]是你想要更改的端口号。使用字符串编辑器将
Serial [X] :的值改为新的标识符(缺省值为C O M [X] : )。
设置串行口的访问级别
你可以更改系统赋予指定串行口的访问级别。要做到这一点,可以按如下步骤修改注册
表(记住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ Serial \Parameters
子项。单击该子项选取它,在右窗口中显示其值。
4) 如果名为S e r i a l [X] : ( [X]是你感兴趣的端口号)的条目不存在,则输入一个。然后,为这
个子项添加一个名为D i s a b l e P o r t的值条目(如果该值不存在),类型为R E G _ D W O R D。要允许
在端口初始化之后对其进行访问,将D i s a b l e P o r t设为0;要禁止在端口初始化之后对其进行访
问,将D i s a b l e P o r t设为1。
设置串行口的IRQ值
你可以更改系统赋予指定串行口的I R Q。要做到这一点,可以按如下步骤修改注册表(记
住,每次机器重新启动都要执行下列步骤,因为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ Serial \Parameters
子项。单击该子项选取它,在右窗口中显示其值。
4) 如果名为Serial [X] : ( [X]是你感兴趣的端口号)的条目不存在,则输入一个。然后,为这
个子项添加一个名为I n t e r r u p t的值条目(如果该值不存在),类型为R E G _ D W O R D。将I n t e r r u p t
设置为所期望的I R Q值。
启用串行口FIFO队列
在Windows 2000中,串行口支持F I F O队列(而不是缺省的L I F O )。要打开某个指定串行口
的F I F O队列,可以按照如下步骤更改注册表(记住,每次机器重新启动都要执行下列步骤,因
为这些条目的内容容易丢失):
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ Serial \Parameters
子项。单击该子项选取它,在右窗口中显示其值。
4) 如果名为Serial [X] : ( [X]是你感兴趣的端口号)的条目不存在,则输入一个。然后,为这
个子项添加一个名为F o r c e F i f o E n a b l e的值条目(如果该值不存在),类型为R E G _ D W O R D。将
F o r c e F i f o E n a b l e设置为1,强迫指定的端口启用F I F O队列。
设置总线型鼠标事件队列的大小
Windows 2000为保存(或排队)鼠标事件设置了缺省的内存量。在某些情况下(例如具有精
细的鼠标分辨率的高分辨率监视器),事件可能会丢失,从而导致错误日志文件中出现错误消
息。要防止这些错误的出现,可以按照如下步骤更改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ B u s m o u s e P a r a m e t e r s子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值M o u s e D a t a Q u e u e S i z e的条目。使用D Wo r d编辑器将M o u s e D a t a Q u e u e S i z e的值
第6章硬件和系统用用71
(十六进制)改为一个新的、更高的值。这个数值是所有可被排队的鼠标事件的数目,要找到合
适的数目可能需要运用试错法。
设置总线型鼠标的分辨率
Windows 2000设置用缺省的每秒采样速率来检测鼠标。对于高分辨率的屏幕,如果缺省
的采样速率过低,那么鼠标的移动可能就会发生丢失。要防止使用总线型鼠标的计算机发生
鼠标移动方面的错误,可以像下面这样修改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ B u s m o u s e P a r a m e t e r s子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值S a m p l e R a t e的条目。使用D Wo r d编辑器将S a m p l e R a t e的值(十六进制)改为一个
新的、更高的值。这个数值是鼠标每秒被检测的次数,要找到合适的数目可能需要运用试错
法。
设置串行鼠标事件队列的大小
Windows 2000为保存(或排队)鼠标事件设置了缺省的内存量。在某些情况下(例如具有精
细的鼠标分辨率的高分辨率监视器),事件可能会丢失,从而导致错误日志文件中出现错误消
息。要防止使用串行口鼠标的计算机发生这些错误,可以按照如下步骤更改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ B u s m o u s e P a r a m e t e r s子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值M o u s e D a t a Q u e u e S i z e的条目。使用D Wo r d编辑器将M o u s e D a t a Q u e u e S i z e的值
(十六进制)改为一个新的、更高的值。这个数值是所有可被排队的鼠标事件的数目,要找到合
适的数目可能需要通过试错法。
设置SCSI的调试级别
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试功能。要打开S C S I的调试功能,可按照如下步骤更改注
册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值S c s i D e b u g的条目。使用D Wo r d编辑器将S c s i D e b u g的值更改为0 (缺省值,不
显示错误消息)到3 (显示完整的错误消息)之间的数值。该设置允许系统根据其它S C S I调试设置
显示错误消息。
激活SCSI驱动程序入口的调试断点
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试特性。要设置一个S C S I断点,可按照如下步骤更改注册
表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值B r e a k P o i n t O n E n t r y的条目。使用D Wo r d编辑器将B r e a k P o i n t O n E n t r y的值更改
为1,允许系统调试器在S p P a r s e D e v i c e内部中断;设置B r e a k P o i n t O n E n t r y的值为0可禁止这种
功能。
在调试期间禁止SCSI断开
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试特性。要更方便地调试S C S I设备,你可以强迫它们以串
行方式(而不是并行方式)执行磁盘I / O,这就需要按照如下步骤更改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
第6章硬件和系统用用73
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值D i s a b l e D i s c o n n e c t s的条目。使用D Wo r d编辑器将D i s a b l e D i s c o n n e c t s的值更改
为1,禁止S C S I总线断开,这将导致所有请求顺序执行;将D i s a b l e D i s c o n n e c t s的值设为0可禁
止这种功能。
在调试期间禁止SCSI的多重请求
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试特性。要防止同时有多个请求发送到S C S I设备,可按照
如下步骤编辑注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值D i s a b l e M u l t i p l e R e q u e s t s的条目。使用D Wo r d编辑器将D i s a b l e M u l t i p l e
R e q u e s t s的值更改为1,禁止同时发送给一个指定的S C S I设备多个请求(缺省设置),将D i s a b l e
M u l t i p l e R e q u e s t s的值设为0可在调试期间禁止这种功能。
在调试期间禁止SCSI同步传输
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试特性。S C S I总线通常以同步方式传输数据,这种方式会
对调试产生影响。要禁止这种行为,可按照如下步骤更改注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值D i s a b l e S y n c h r o n o u s Tr a n s f e r s的条目。使用D Wo r d编辑器将D i s a b l e
Synchronous Transfers 的值更改为1,禁止通过S C S I总线的同步传输(缺省设置),将D i s a b l e
Synchronous Transfers 的值设为0可在调试期间禁止这种功能。
在调试期间允许SCSI-II的标记命令队列
S C S I是Windows 2000硬盘驱动器常用的硬盘控制系统。当这种驱动器遇到问题时,可使
用Windows 2000提供的一组S C S I调试特性。你可以按照下面的步骤编辑注册表,关闭队列中
有标记的S C S I命令:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Services\ [D E V I C E N A M E]
\ P a r a m e t e r s子项, [D E V I C E N A M E]是放在引号中的S C S I适配器的名称。单击该子项选取它,
在右窗口中显示其值。
4) 定位到值D i s a b l e Ta g g e d Q u e u e i n g的条目。使用D Wo r d编辑器将D i s a b l e Ta g g e d Q u e u e i n g
的值更改为1,禁止队列中带标记的命令(缺省设置);将D i s a b l e Ta g g e d Q u e u e i n g的值设为0可
在调试期间允许带标记的命令,为S C S I适配器提供对S C S I - I I特性的支持。
获取已安装的Windows 2000的版本信息
某些应用程序可以检测注册表,获取已安装的Windows 2000/NT的版本信息。如果这种
应用程序莫名其妙地拒绝运行,那么你可以检查注册表条目中的Windows 2000/NT的版本号
是否有效:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 定位到值C u r r e n t B u i l d、C u r r e n t Ty p e和C u r r e n t Ve r s i o n的条目。使用D Wo r d编辑器检查
这些值,将它们与出错应用程序文档中记录的值相比,如果它们的值错误,则更改为正确的
值。
获取已安装的Windows 2000的系统路径信息
某些应用程序可以检测注册表,获取已安装的Windows 2000/NT的版本信息。如果这种
应用程序莫名其妙地拒绝运行,那么你可以检查注册表条目中的Windows 2000/NT的系统路
径是否有效:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 定位到值S y s t e m R o o t和P a t h N a m e的条目。使用字符串编辑器检查这些值,将它们与出
错应用程序文档中记录的值相比,如果它们的值错误,则更改为正确的值。
警告在注册表条目E n v i r o n m e n t中无法找到S y s t e m R o o t和P a t h N a m e的值。
获取已安装的Windows 2000的安装路径信息
某些应用程序可以检测注册表,获取已安装的Windows 2000/NT的版本信息。如果这种
应用程序莫名其妙地拒绝运行,那么你可以检查注册表条目中的Windows 2000/NT的安装路
径是否有效:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 定位到值S o u r c e P a t h的条目。使用字符串编辑器检查S o u r c e P a t h的值,将它们与出错应
用程序文档中记录的值相比,如果它们的值错误,则更改为正确的值。
更改Windows 2000启动时运行的程序
系统管理员可以添加或删除Windows 2000启动时运行的程序。下面介绍怎样设置注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到SYSTEM\CurrentControlSet\Control\Session Manager子
项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值B o o t E x e c u t e的条目。使用多重字符串编辑器添加想要运行的应用程序的命令
行,或者删除不想再运行的应用程序的命令行。
删除一个不正确的启动作业条目
Windows 2000最让人痛苦的错误是指出系统所需的作业无法运行。这种错误通常发生在
当应用程序更改注册表引起它以前的安装工具在其安装后连续重启动时,这时它会崩溃,或
者误写而且没有删除这个注册表条目。下面介绍怎样解决这种问题:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n Wi n d o w s子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值L o a d和R u n的条目。使用字符串编辑器确保L o a d和R u n的值没有被设置为不存
在的或无效的条目。
禁止非系统的启动错误弹出窗口
Windows 2000一种可能令人讨厌的特性就是在启动过程中会弹出出错对话框,并等待用
户响应。如果没有系统管理员值班来清除这些对话框,那么它可能会引起混乱。幸运的是,
你可以禁止不严重的错误弹出对话框,下面介绍怎样调整注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n Wi n d o w s子项。单击该子项选取它,在右窗口中显示其值。
4) 如果E r r o r M o d e条目不存在,则添加它,其类型为R E G _ D W O R D。接着,把E r r o r M o d e
的值设置为1,禁止弹出非系统性的错误消息。
禁止所有的启动错误弹出窗口
Windows 2000一种可能令人讨厌的特性就是在启动过程中会弹出出错对话框,并等待用
户响应。如果没有系统管理员值班来清除这些对话框,那么它可能会引起混乱。幸运的是,
你可以禁止所有的错误弹出对话框,下面介绍怎样调整注册表:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n Wi n d o w s子项。单击该子项选取它,在右窗口中显示其值。
4) 如果E r r o r M o d e条目不存在,则添加它,其类型为R E G _ D W O R D。接着,把E r r o r M o d e
的值设置为2,禁止所有的错误消息弹出。
设置Windows 2000的关机时间
在Windows 2000中你可能会遇到这样的问题:在某个服务保存其数据之前系统就关闭了,
从而导致不一致的行为。按照下面的步骤可以防止这个问题:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ C u r r e n t C o n t r o l S e t \ C o n t r o l子项。单击该子项选
取它,在右窗口中显示其值。
4) 定位到值Wa i t To K i l l S e r v i c e Ti m e o u t的条目。使用D Wo r d编辑器将Wa i t To K i l l S e r v i c e
Ti m e o u t的值改为一个更大的、以毫秒表示的值(缺省值为20 000,即2 0秒),这样服务就有足
够的时间关闭了。
处理假的Hotfix出错消息
当你试图使用Windows 2000版的H o t f i x时可能会出现一个令人头痛的问题:它会告诉你
它已经安装了,而实际上并没有。H o t f i x可能只是简单地检查本身的注册表项是否存在,而不
会检查注册表中指定的I D值。下面介绍怎样处理这个问题:
1) 打开“开始”菜单并选择“运行”。单击“浏览”按钮开始浏览直到找到Windows 2000
的根目录(通常是W I N N T )为止。进入S y s t e m目录并找到R e g e d t 3 2 . e x e,将其选入对话框并单击
“确定”按钮。注册表编辑器启动,将所有的配置单元分别显示在不同的层叠子窗口中。
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 删除H O T F I X子项。这样出错的H o t f i x就会安装自己并重新创建这个项。
处理A:驱动器启动的出错消息
运行D O S或Windows 3.x应用程序的Windows 2000机器有时会在启动时显示奇怪的出错消
息:“软盘驱动器中没有磁盘。”这是A u t o e x e c . b a t中PAT H语句的问题。下面介绍怎样通过更
改注册表来解决这个问题:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S Y S T E M \ S E T U P子项。单击该子项选取它,在右窗口中
显示其值。
4) 定位到值Wi n n t P a t h的条目。使用字符串编辑器扫描Wi n n t P a t h字符串,寻找指向A驱
(或者C D - R O M驱动器)的非法路径。如果不存在非法路径,那么这个问题可能是在另一个层次
上发生的。
设置WOW设备未就绪超时
使用Windows 3.x或M S - D O S应用程序时,某些网络设备可能会遇到设备未就绪的消息。
要解决这一问题,可以按如下步骤修改注册表中的W O W条目:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n子项。
单击该子项选取它,在右窗口中显示其值。
4) 定位到值D e v i c e N o t S e l e c t e d Ti m e o u t的条目。考虑到可能有速度较慢的外设,可使用
D Wo r d编辑器将D e v i c e N o t S e l e c t e d Ti m e o u t的值改为一个更高的、以秒计的值(缺省值为1 5 )。
提示如果值D e v i c e N o t S e l e c t e d Ti m e o u t不存在,则可以使用“编辑” |“添加值”菜
单项创建它。
防止WOW使Windows 2000关机失败
W O W所引起的一种实际上并不令人讨厌的错误是阻止Windows 2000在一个实际上不存在
的Windows 16进程未被删除前关机。这个小问题可以这样来解决:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到D E FA U LT\Control Panel\Desktop子项。单击该子项选取
它,在右窗口中显示其值。
4) 如果名为A u t o E n d Ta s k s的值条目不存在,那么创建它,其类型为R E G _ S Z。把
A u t o E n d Ta s k s的值设为1,强迫W O W关机,不理会讨厌的“假任务”错。
强迫在写WOW注册表的同时写INI文件
W O W通常会读取Windows 3.x文件的I N I文件,并通过伪装成应用程序并将数据保存在注
册表中来维护它们所发生的编号。在某些情况下,这样做会导致问题。你可以强迫W O W在也
向I N I文件写入数据,步骤如下:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n I n i F i l e M a p p i n g子项。单击该子项选取它,在右窗口中显示其值。
4) 找到引号括起的该应用程序的条目。使用字符串编辑器把这个值改为“ !”,强迫同时
写入注册表和I N I文件。
提示如果应用程序名称的值不存在,那么先使用“编辑” |“添加值”创建它。
强迫注册表在新用户登录时从INI文件恢复
W O W通常会读取Windows 3.x文件的I N I文件,并通过伪装成应用程序并将数据保存在注
册表中来维护它们所发生的编号。在某些情况下,这样做会导致问题。你可以强迫W O W在每
次新用户登录时重新读取I N I文件,步骤如下:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n I n i F i l e M a p p i n g子项。单击该子项选取它,在右窗口中显示其值。
4) 找到引号括起的该应用程序的条目。使用字符串编辑器把这个值改为“ #”,强迫系统
在新用户登录时重新读取I N I文件。
提示如果应用程序名称的值不存在,那么先使用“编辑” |“添加值”创建它。
在注册表中没有发现WOW INI数据时强迫出错
W O W通常会读取Windows 3.x文件的I N I文件,并通过伪装成应用程序并将数据保存在注
册表中来维护它们所发生的编号。在某些情况下,这样做会导致问题。如果I N I数据没有在注
册表中发现,那么你可以按照下面的步骤强迫W O W发出出错信号:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n I n i F i l e M a p p i n g子项。单击该子项选取它,在右窗口中显示其值。
4) 找到引号括起的该应用程序的条目。使用字符串编辑器把这个值改为“ @”,强迫当
I N I数据没有出现在注册表时发出出错消息。
提示如果应用程序名称的值不存在,那么先使用“编辑” |“添加值”创建它。
设置Windows 2000调试器的路径和命令行
按照下面的步骤,你可以控制Windows 2000怎样启动调试器调试系统或应用程序的错误:
2) 选择“窗口”菜单项H K E Y _ L O C A L _ M A C H I N E,其子窗口显示。最大化该窗口以便
于使用。
3) 使用左窗口的树型控件定位到S O F T WA R E \ M i c r o s o f t \ Wi n d o w s N T \ C u r r e n t Ve r s i o n A e d e b u g子项。单击该子项选取它,在右窗口中显示其值。
4) 定位到值D e b u g g e r的条目,使用字符串编辑器把D e b u g g e r的值改为你想要使用的工具
(例如Visual C++),并且包括所有需要使用的命令行开关。