Windows2000注册表

我们首先看一下Windows2000的注册表是怎样组成的。注册表有以下几个表项:

  • HKEY_LOCAL_MACHINE:HKEY_LOCAL_MACHINE(HKLM)是包含操作系统及硬件相关信息(例如计算机总线类型,系统可用内存,当前装载了哪些设备驱动程序以及启动控制数据等)的配置单元。实际上,HKLM保存着注册表中的大部分信息,因为另外四个配置单元都是其子项的别名。
  • HKEY_CURRENT_USER:HKEY_CURRENT_USER(HKCU)配置单元包含着当前登录到由这个注册表服务的计算机上的用户的配置文件。其子项包含着环境变量、个人程序组、桌面设置、网络连接、打印机和应用程序首选项(环境变量在Windows2000中被用来允许脚本、注册表条目,以及其它应用程序使用通配符来代替可能会发生改变的重要的系统信息)。这些信息是HKEY_USERS配置单元当前登录用户的SecurityID(SID)子项的映射。
  • HKEY_CLASSES_ROOT:HKEY_CLASSES_ROOT(HKCR)配置单元包含的子项列出了当前已在计算机上注册的所有COM服务器和与应用程序相关联的所有文件扩展名。这些信息是HKEY_LOCAL_MACHINE\SOFTWRE\Classes子项的映射
  • HKEY_USERS:HKEY_USERS(HKU)配置单元包含的子项含有当前计算机上所有的用户配置文件。其中一个子项总是映射为HKEY_CURRENT_USER(通过用户的SID值)。另一个子项HKEY_USERS\DEFAULT包含用户登录前使用的信息。
  • HKEY_CURRENT_CONFIG:HKEY_CURRENT_CONFIG(HKCC)配置单元包含的子项列出了计算机当前会话的所有硬件配置信息。硬件配置文件出现于WindowsNT版本4,它允许你选择在机器某个指定的会话中支持哪些设备驱动程序。这些信息是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet子项的映射。

注册表是一个小型关系数据库。因此其中有一些重要的数据类型需要说明:

  • REG_NONE:未知类型,加密数据
  • REG_SZ:字符串,文本字符
  • REG_EXPAND_SZ:字符串,带有变量的文本
  • REG_BINARY:二进制,二进制数据
  • REG_DWORD:数值,数值数据
  • REG_DWORD_BIG_ENDIAN:数值,非Intel数值
  • REG_LINK:字符串,文件路径
  • REG_MULTI_SZ:多重字符串,字符串数组
  • REG_RESOURCE_LIST:字符串,硬件资源列表
  • REG_FULL_RESOURCE_DESCRIPTOR:字符串,硬件资源ID
  • REG_RESOURCE_REQUIREMENTS_LIST:字符串,硬件资源ID

下面我们来看看如何通过注册表的修改达到一些相应的功能:

  1. 更改注册表数据库允许的最大尺寸:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control中的RegistrySizeLimit中进行修改,其数据类型为DWORD;而其值的意义如下:
    • 0:基于分页池(pagedpool)的大小,最大可达它的25%;
    • 4-0xFFFFFFFE所分配的兆字节的数目;
    • 0xFFFFFFFF分页池大小的80%
  2. 定位Windows3.x应用程序INI文件的注册条目:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\IniFile Mapping中,数据类型为REG_SZ

  3. 定位MS-DOS 应用程序的设置信息:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW\wowcmdline,通过编辑它的值,可以指定DOS程序运行时的一些参数:

    • %systemroot%\System32\Ntvdm.exe指定运行MS-DOS应用程序的缺省路径和虚拟设备管理器(VirtualDeviceManger,VDM);

    • -a <vdmpath>指定当前V D M 的命令行参数;

    • -f <path>改变Ntvdm.exe的路径;

    • -m隐藏VDM控制台窗口的显示;

    • -w <wowvdmpath>设置WOW(Win16onWin32)VDM应用程序

  4. 定位Windows 2000 的启动信息HKEY_LOCAL_MACHINE\SYSTEM下会有以下几个表项:

    • ControlSet001:包含Windows2000的主控制集(primary control set)。用于在缺省时启动系统,但是首先会被复制到其它地方。

    • ControlSet002:包含Windows 2000的备份控制集(backup control set)。当ControlSet001发生故障时会被用来启动系统。

    • CurrentControlSet:包含Windows 2000正在使用的控制集(control set),是实际上用来启动系统的控制集。

    • CurrentControlSet\Control:包含定义了计算机启动时状态的一组子项。

    • CurrentControlSet\Control\ServiceGroupOrder:包含为构建操作系统所需的载入程序的精确顺序列表。例如,系统必须在装载文件系统之前装载硬盘驱动程序。CurrentControlSet\Services :包含启动系统所需的所有设备驱动程序。

  5. 定位Windows 2000 的环境变量HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment下面的一些子项表示的就是windows 2000中的环境变量

  6. 定位Windows 3.x 的缺省DLLHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW\KnownDLLs中的内容表示的就是Windows 3.x要使用的DLL

  7. 启用和禁用Dr. Watson 调试工具HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug\,其中Debugger的值,使它包含该工具的名称和命令行信息。对于Dr.Watson来说,值应该为drwtsn32 -p %ld -e %ld –g。

  8. 启用命令提示符shell 的文件名完成特性Unix C shell 有一种非常好的特性称为“文件名完成”(file name completion),当Ta b 键被按下时,它会根据命令行中未完成的路径名在所有可能的路径中查找最匹配的路径。通过修改注册表条目,你也可以启动Windows 2000 命令提示符shell的这种特性。可以通过下面的步骤实现此功能:在HKEY_CURRENT_USER\Software\Microsoft\CommandProcessor\CompletionChar中输入用户喜欢的一个ASCII值(缺省值是9 ,即Tab键,不过你可以使用任意一个你喜欢的键,只要它不在实际文件名中使用)。这一修改要重新启动计算机才能够生效。

  9. 更改命令提示符shell 的缺省选项:对于shell的选项实在是很多,在HKEY_CURRENT_USER\Console下保存的就是控制台参数:

    • CursorSize:REG_DWORD,光标占一个字符的百分比数(以十六进制)

    • FullScreen: REG_DWORD,1,表示整个屏幕;0 表示窗口(只针对I n t e l )

    • FaceName:REG_SZ, 控制台(必须在本地)所使用的字体的名称

    • FontFamily: REG_DWOR , 0 表示TrueType;如果不是TrueType则等于其它值

    • FontSize: REG_DWORD, 用3 2 比特表示的宽(低1 6 位)和高(高1 6 位)

    • FontWeight: REG_DWORD, 0 表示正常字体,其它值表示粗体、斜体等

    • HistoryBufferSize: REG_DWORD, 可回忆起的命令数目的十六进制值

    • InsertMode:REG_DWORD, 0 表示插入模式;1 表示改写模式

    • NumberOfHistoryBuffers:REG_DWORD, 历史内存缓冲区数目的十六进制值(缺省值为4 )

    • PopupColors:REG_DWORD,用8 比特表示的菜单前景色(低4 位)和背景色(高4 位)

    • QuickEdit: REG_DWORD,0 表示无鼠标的编辑;1 表示有鼠标的编辑

    • ScreenBufferSize:REG_DWORD, 用3 2 比特表示的屏幕缓冲,宽由低1 6 位表示

    • ScreenColors:REG_DWORD, 用8 比特表示的屏幕前景色(低4 位)和背景色(高4 位)

    • WindowSize:REG_DWORD, 用3 2 比特表示的控制台窗口的大小(宽由低位表示)

  10. 允许为每个资源管理器实例创建独立的进程:如果多个资源管理器在使用同一个进程,那如果一个资源管理器死了,其它的资源管理器也就完了。可以通过注册表改变这一状况:设置HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\DesktopProcess为1,它的类型为REG_DWORD,然后重新启动计算机

  11. 禁止在资源管理器shell 重启动时还原已打开的资源管理器窗口HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSaveSettings的值为1,它的类型为REG_BINARY

  12. 为所有的用户增加一个定制的shellWindows 2000 允许使用定制的shell ,但是,要使它们工作则必须编辑注册表。在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon上添加用户定制的shell

  13. 为用户设置子菜单显示延迟HKEY_CURRENT_USER\ControlPanel\Desktop\MenuShowDelay,它的类型为REG_DWORD,它表示的是菜单显示延时以毫秒计的时间,将MenuShowDelay的值设置得过低将会导致“菜单崩溃”

  14. 为用户设置登录壁纸:定制某个用户登录时显示的壁纸可以在HKEY_CURRENT_USER\Control Panel\Desktop中输入相应图形文件的路径与文件名。

  15. 为用户设置登录屏幕背景色:这一功能可以在HKEY_CURRENT_USER\ControlPanel\Desktop中以DWORD编辑Background这一项的内容,此项的内容表示未使用背景图案时的RGB背景色

  16. 为用户设置缺省的键盘行为:不同的用户通常需要不同的键盘设置,这可以通过注册表的修改完成:在HKEY_CURRENT_USER\ControlPanel\Keyboard下的

    • KeyboardDelay设置DWord类型的0到3之间的数值,它表示1/4秒到2秒;

    • KeyboardSpeed下可以设置连续按键下一秒钟输入的字符数