学理发常识:Windows注册表概念及实用技巧搜集

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 19:47:26
Windows注册表概念及实用技巧搜集2008年08月07日 星期四 9:49

       最近几天集中研究了下Windows注册表,小有心得;分享如下,希望对朋友们有所帮助。

1、定义

Microsoft Windows 9x、Windows CE、Windows NT、Windows 2000、Windows XP 和 Windows Vista 中使用的中央分层数据库,用于存储为一个或多个用户、应用程序和硬件设备配置系统所必需的信息。

注册表包含 Windows 在运行期间不断引用的信息,例如,每个用户的配置文件、计算机上安装的应用程序以及每个应用程序可以创建的文档类型、文件夹和应用程序图标的属性表设置、系统上存在哪些硬件以及正在使用哪些端口。

注册表取代了 Windows 3.x 和 MS-DOS 配置文件(例如,Autoexec.bat 和 Config.sys)中使用的绝大多数基于文本的 .ini 文件。虽然几个 Windows 操作系统都有注册表,但这些操作系统的注册表有一些区别。
注册表数据存储在二进制文件中。

注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很神秘。不幸的是,微软并没有完全公开讲述关于注册表正确设置的支持信息,这样使得注册表看上去更不可琢磨。处理和编辑注册表如同“黑色艺术”一样,它在系统中的设置让用户感觉象在黑暗中摸索一样找不到感觉。这样,因为用户对这方面的缺乏了解使得注册表更多的出现故障。

注册表是一套控制操作系统外表和如何响应外来事件工作的文件。这些“事件”的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等。注册表因为它的目的和性质变的很复杂,它被设计为专门为32位应用程序工作,文件的大小被限制在大约40MB。

2、注册表与系统其他组件的联系

在Windows系统里,组策略、控制面板及其他各种系统及软件的设置,本质上修改的都是注册表里的数据。注册表损坏将引起系统的严重问题,特别是在WinXP、Win2003及Vista版本中,注册表损坏将导致系统无法启动等灾难性问题。所以,非专业人士,轻易不要修改注册表,尽量利用组策略、控制面板等方式来修改系统及软件等设置。

3、注册表组件介绍

在注册表编辑器中注册表项是用控制键来显示或者编辑的。控制键使得找到和编辑信息项组更容易。因此,注册表使用这些条目。下面是六个控制键 (Windows NT以前的系统为6个,目前常见系统都是5个)

HKEY_LOCAL_MACHINE

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_DYN_DATA (基于Windows NT的系统,包括Winxp、Win2000、Win2003、Vista等都没有这一项)

HKEY_USERS

HKEY_CURRENT_USER

Winnt和Win95的注册表并不兼容。从Win95向Winnt升级需要你重新安装32位应用程序,重新在桌面上创建图标,并重新建立用户环境。

通过控制键可以比较容易编辑注册表。虽然它们显示和编辑好像独立的键,其实HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。

HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有内容。每次计算机启动时,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的信息被映射用以查看和编辑。

HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗编辑相对来说显得更容易和有条理。

HKEY_USERS保存着缺省用户信息和当前登陆用户信息。当一个域成员计算机启动并且一个用户登陆,域控制器自动将信息发送到HKEY_CURRENT_USER里,而且HKEY_CURRENT_USER信息被映射到系统内存中。其他用户的信息并不发送到系统,而是记录在域控制器里。

这也就是注册表的双重入口概念,即在注册表的不同位置定义了相同内容(或称交叉内容),提供了额外的系统可靠性及安全性;而这些交叉内容存在优先级,系统信息优于用户信息生效,即HKEY_LOCAL_MACHINE中定义的信息生效优先级大于HKEY_USERS中定义的信息;在注册表中修改键值时,优先级高的有效;而在“控制面板”修改时,则没有优先级的说法,因为在控制面板中修改时,注册表里的几个对应值将同时被改变。

4、注册表常用键

(1)木马常用的“映像劫持技术”
HKEY_LOCAL_MACHINE\microsoft\windows Nt\currentversion\Image File Execution Options子键下,建立要劫持程序的对应debugger项(reg_sz类型),键值设为要执行程序(如木马等)的绝对路径。

(2)将鼠标放在某一文件(不包括文件夹或驱动器等)时显示的提示信息
Hkey_classes_root\*子键下的infotip项,默认值为[prop:type;docauthor;doctitle;docsubject;doccomment;write;size]分别对应类型;作者;标题;主题;注释;修改时间;大小;
同一子键下的openwithlist和shellex项分别对应“打开方式”中选择使用程序列表和外壳扩展(包括上下文菜单扩展和属性页扩展)

(3)修改右键菜单选项
Hkey_classes_root\clsid\shellfolder子键下,修改attributes的值中第一个字节(01复制;02剪切;03复制和剪切;10重命名;20删除;30重命名和删除;40属性;50重命名和属性;60删除和属性;70重命名、删除和属性;73重命名、删除、属性、复制和剪切)

(4)不保留用户桌面设置(重启后恢复默认值)
Hkey_users\.default\software\microsoft\windows\currentversion\policies\explorer子键下,新建Dword项“NoSaveSettings”,值设为1

(5)精确定位桌面壁纸的坐标
Hkey_current_user\control panel\desktop子键下,新建字符串值“WallPaperOriginX”和“WallPaperOriginY”,设置精确坐标值(注意值不要超过桌面最大坐标范围,且不能为负值)

(6)30项实用禁用
注册表里找到“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer".
1.新建二进值NoDriveTypeAutoRun,设置键值b5,00,00,00,为禁用光盘自动运行。(该值为一个4字节二进制值,对应位为1表示关闭自动运行,为0表示开启自动运行;其中第0位代表未知驱动器,第1位代表没有权限的驱动器,第2位代表可移动驱动器(如U盘等),第3位代表固定驱动器(如硬盘),第4位代表远程驱动器,第5位代表光盘驱动器,第6位代表RAM驱动器,第7位保留) 可参考http://hi.baidu.com/jszhangyifei/blog/item/63fd6d385965dc22b9998f35.html
2.新建键值dword键值为EditLevel,设置键值为1,禁用开始菜单中“程序”上的水平线。
3.新建二进制值键值NoStartBanner,设置键值为01,00,00,00,禁用单机“从这里开始”动画箭头。
4.新建dword设键值为NoFavoritesMenu,设置键值为1,禁用开始菜单中的“收藏夹”.
5.新建dword键值NoRecentDocsMenu,设置键值为1,禁用开始菜单中的“文档”. 6.新建dword键值Nofind,设置键值1为禁用开始菜单中的“查找”.
7.新建dword键值NoRun,设置键值1,为禁用开始菜单中的“运行”.
8..新建dword键值NoLogOff,设置键值为1,禁用开始菜单中的"注销”.
9..新建dword键值NoClose,设置键值为1,禁用开始菜单中的"关闭“.
10..新建二进制值NoRecentDocsHistory,设置键值01,00,00,00,不保存新近打开的文档历史记录。
11.新建二进制设置键值为退出时自动删除“运行”,“查找”中的历史记录,与10题一起设置,自动清除新近打开的所有文档的历史记录。
12.新建dword键值NoNetHood,设置键值为1,禁用开始菜单中的“网上邻居”.
13.新建dword键值NoInternetIcon,设置键值为1,禁用IE浏览器图标。
14.新建dword键值NoSaveSettings,设置键值为1,禁用退出时保存设置(锁定桌面)。
15.新建二进制键键值Nodrives,设置为01,00,00,00,禁用A驱动盘,设置为ff,ff,ff,ff禁用所有驱动器。
16.新建dword键值NoFileMenu,设置键值为1,禁用"我的电脑”,“资源管理器”及“我的文档中”中的“文件”菜单。
17.新建dword键值NoActiveDesktop,设置键值为1,禁用显示属性中的“Web"选项卡.
18.新建dword键值NoChangeStartMenu,设置键值为1,禁用在开始菜单拖放快捷菜单;
19.新建dword键值NoViewContextMenu,设置键值为1,禁用右键快捷菜单.
20.新建dword键值NoTraycontextMenu,设置键值为1,禁用任务栏日快捷菜单;
21.新建dword键值NoDesktop,设置键值为1,禁用桌面上的所有图标选项。
22.新建dword键值NoAddPrinter,设置键值为1,在打印机文夹中禁用“添加打印机”。
23.新建dword键值NoDeletePtinter,设置键值为1,在打印机文夹中禁用“删除打印机”。
24.新建dword键值NoPrinterTabs,设置键值为1,禁用打印机属性中的“常规”和“详细”选项卡。
25.新建dword键值NoSetFolders,设置键值为1,禁用“设置”中的“控制面板”和“打印机”。
26.新建dword键值NoSetTaskbar,设置键值为1,禁用“设置”中的“任务栏属性和开始菜单”。
27.新建dword键值NofolderOptions,设置键值为1,禁用“设置”菜单中的“文件夹选项”。
28.新建dword键值NoSetActiveDesktop,设置键值为1,禁用“设置”菜单中的“活动桌面”。
29.新建dword键值NoWindowsUpdate,设置键值为1,禁用“设置”菜单中的“WindowsUpdate选项。
30.上述第25.26.27.28.29五项全部禁用后则可以在开始菜单中删除“设置”选项

(7)解开被禁用的注册表
建立一个“unlockreg.reg”文件,此文件是用记事本建立一个以REG为后缀名的文件,文件名可自定义,内容如下:
REGEDIT4
空一行[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] "DisableRegistryTools"=dword:00000000
要注意的是,在“REGEDIT4”一定要大写(如果你是Windows 2000或Windows XP用户,请将“REGEDIT4”写为“Windows Registry Editor Version 5.00)”,且后面要空一行,并且“REGEDIT4”中“T”和“4”之间一定不能有空格,否则……

(8)更改windows下用户文件的默认路径
Hkey_users\.default\software\microsoft\windows\currentversion\explorer\user shell folders子键下的各键值,用户可自行修改路径。

(9)添加应用程序的快捷路径
Hkey_local_machine\software\microsoft\windows\currentversion\app paths子键下,创建各应用程序的对应子键,修改“默认”值为对应程序的路径

(10)删除快捷方式图表中的小箭头
A、启动注册表编辑器(开始--运行-输入regedit),然后依次展开如下分支:“HKEY_CLASSES_ROOT\lnkfile”;
B、删除“lnkfile”子项中的“IsShortcut”字符串值项,因为“IsShortcut”项是用来控制是否显示普通应用程序和数据文件快捷方式中小箭头的;
C、再依次展开如下分支:“HKEY_CLASSES_ROOT\piffile”;
D、删除“piffile”子项中的“IsShortcut”字符串值项,IsShortcut值项用来控制是否显示MS_DOS程序快捷方式的小箭头;
E、退出注册表编辑器,这时快捷方式图标上的小箭头就消失不见了

(11)隐藏驱动器
Hkey_current_user\software\microsoft\windows\currentversion\policies\explorer子键下,新建“NoDrivers”项,该键值有4个字节,每个字节的每一位对应于一个盘符(A~Z),即第一个字节从低位到高位依次代表从A~H的8个盘(01为A,02为B,04为C……80为H),第二个字节代表从I~P的8个盘,第三个字节代表从Q~X的8个盘,第4个字节代表Y和Z两个盘

(12)快速进入命令行方式
Hkey_classes_root\directory\shell子键下,新建子键“commandprompt”,修改右边串口的“默认”键值为想在菜单上显示的文字;再新建子键“command”,修改“默认”键值为“cmd /k cd %1”

(13)给命令行方式添加自动完成功能
Hkey_current_user\software\microsoft\command\processor子键下,新建双字节值项“completionchar”,值设为“9”