注册表基础知识

  • 格式:doc
  • 大小:47.00 KB
  • 文档页数:10

注册表基础知识.txt心是自己的,干嘛总被别人伤......没有伞的孩子必须努力奔跑▓敷衍旳青春 总昰想太多 怨,只怨现实太现实╰⌒﹏为什么在一起要两个人的同意丶而分手只需要一个人注册表基础知识

注册表是Windows系统的核心,它实际上是一个庞大的数据库,是Windows的数据配置中心,里面存储着大量的软件、硬件及用户信息。通过修改注册表,我们可以对系统功能进行更改、限制、增强、优化等等。注册表的修改一般可以通过多种不同的途径:如注册表编辑器(regedit),专门的修改工具,手写reg注册表文件,控制面板,软硬件的安装与应用,用户的普通操作等。

为了对注册表有一个初步的认识,单击“开始”->“运行”,输入“regedit”,单击“确定”,出现一个类似于Windows资源管理器的“注册表编辑器”程序界面,其整体可分为左右两个窗格,在左侧窗格里列出了几个根键。下面简要介绍一下各根键的作用:

1.HKEY_CLASSES_ROOT 包括所有已注册的文件类型、OLE信息以及更多的内容,它其实就是 HKEY_LOCAL_MACHINE\Software\CLASSES子键的内容(在这里称为“别名”),只是单独把它作为根键列出来以便查阅。

2.HKEY_CURRENT_USER 包含当前登录的用户信息,是HKEY_USERS根键下某一子键的别名。对于Windows 9X,它的名称是当前用户的名称;对于Windows NT/2000/XP,它的名称是当前用户的安全标识符(SID)。如果系统是Windows 9X而且没有设置多用户的话,则HKEY_CURRENT_USER就是HKEY_USERS中.DEFAULT的别名。

3.HKEY_LOCAL_MACHINE Windows最重要的根键,包括了计算机软件和硬件的配置数据,这些信息专为计算机本身使用,而不是为登录的某个用户使用。

4.HKEY_USERS 包括了所有登录用户及默认用户的配置数据,默认的用户配置信息存放于HKEY_USERS\.DEFAULT中。

5.HKEY_CURRENT_CONFIG 包含计算机的当前硬件配置信息,在Windows 9X中,它是HKEY_LOCAL_MACHINE\Config\0001(0002...)的别名;在Windows NT/2000/XP中,它是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001(0002...)的别名,其中0001、0002对应不同的硬件配置文件。

6.HKEY_DYN_DATA 该根键存放了系统在当前状态的动态信息,Windows每次启动时都会重建它并保存在内存中,而永远不会写入磁盘。注意Windows XP的注册表不存在此根键。

从上面可以看出,注册表实际上只有两个主要根键,HKEY_LOCAL_MACHINE和HKEY_USERS,其余的根键都只是这两个根键的某个分支。 注册表中所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于文件夹的目录结构,每个类似文件夹的项目被称做键(主键,Windows 2000及以后的注册表编辑器把它叫做项),它们可能包含一系列子项目,叫做子键(或子项),子键可以包含更多的子键。另外还有一个常被提到的分支的概念,它表示一个特定的子键及其所包含的一切。

在注册表编辑器的右侧窗格中,我们可以看到每个键均可包含任何数量的值(也称做键值、值项),每个值均包含三部分:名称、数据和数据类型,数据类型大致可分为三种:

1.字符串(REG_SZ):可以是任何字符,最大长度不能超过255个英文字符。Windows2000及以后的操作系统还提供了另外两种字符串:多字符串(REG_MULTI_SZ)和可扩充字符串(REG_EXPAND_SZ)。

2.二进制(REG_BINARY):没有长度限制的二进制数据,在注册表编辑器中,二进制是以十六进制的方式显示出来的。

3.DWORD/双字(REG_DWORD):32 位(4个字节,即双字)长度的二进制数值,注册表以8位16进制数来显示DWORD值,在编辑 DWORD 数值时,可以选择用十进制还是16进制的方式进行输入。

注册表HKEY_CLASSES_ROOT根键的简要分析 在Windows注册表里,HKEY_CLASSES_ROOT是列在第一位的根键,其重要性可想而知,其实它就是HKEY_LOCAL_MACHINE\Software\CLASSES中的全部内容,对HKEY_CLASSES_ROOT的修改其实也就是对HKEY_LOCAL_MACHINE\Software\CLASSES的修改。据说微软把它单独列出来是为了向下与Windows3.x兼容,不过更重要的应该是方便了查阅,使用户能更快的获取信息。

HKEY_CLASSES_ROOT是个非常庞大的数据库,它包括了注册表一半以上的数据,大家可以把HKEY_CLASSES_ROOT单独导出来,再导出整个注册表,对比一下就很清楚了。

HKEY_CLASSES_ROOT大体上包括了已注册的文件类型、OLE信息以及更多的内容,可以粗略地分为两个部分:A、前面带“.”的键,B、前面不带“.”的键,A部分的键均可以在B部分找到相对应的键,下面举一个BMP文件的例子来说明。

BMP文件也就是扩展名为BMP的文件,打开注册表编辑器,找到HKEY_CLASSES_ROOT\.bmp,可以看到右边“默认”的值是“ACDSee.BMP”(假定已安装了ACDSEE并与BMP文件关联),然后找到HKEY_CLASSES_ROOT\ACDSee.BMP,可以看到里面有多个子键。

“DefaultIcon”子键定义了Windows显示此文件类型的图标,其“默认”的值是“C:\Program Files\ACD Systems\PlugIns\IDE_ACDStd.apl,1”,表示定义BMP文件显示图标的图标文件,最后的“1”表示图标的ID(从0开始计数),因为“IDE_ACDStd.apl”这个文件不只包含一个图标。 “shell”子键定义了BMP文件的打开方式,包含了子键“edit”、“Open”等等,在“shell”子键右边“默认”值中的“Open”就是默认打开文件的方式(通过双击即用这种方式打开),“edit”和“Open”都各有一个子键“command”,其“默认”的值就是用于打开BMP文件的应用程序,这两个项目都会出现在BMP文件的右键菜单里,若删除“edit”键,则相应右键菜单项也将被删除,也可以另外添加主键,指定更多的程序用来关联打开BMP文件,其右键菜单也会出现相应项目。

还有一个子键“CLSID”,表示它的类标识符(CLSID)名称,每个类标识符的信息都可以在HKEY_CLASSES_ROOT\CLSID中查找。一些类标识符还会定义一个程序标识符(ProgID),它通常都简短易读,大大方便了程序的调用而不必使用冗长而乏味的类标识符。

注册表的一些使用技巧 △不重启使注册表修改生效的方法 Windows 95/98/ME: 按下CTRL+ALT+DELETE, 弹出“关闭程序”对话框,选择“Explorer”,然后单击“结束任务”,显示关闭计算机的画面,单击“取消”,十秒钟后将会弹出一个程序没有响应的对话框,单击“结束任务”,Windows资源管理器将与新的注册表设置一起重新加载。

Windows 2000/XP/2003: 按下Ctrl+Alt+Delete, 然后选择“任务管理器”。选择“进程”标签,选择“explorer.exe”进程,单击“结束进程”,选择“文件->新任务”,然后输入“explorer”,单击“确定”。

注意:并不是所有注册表的修改都能通过这种方法生效,有些需要注销再登录,在HKEY_CURRENT_USER中所做的修改都可以使用前面这两种方法生效,但是在HKEY_LOCAL_MACHINE中的一些设置仍然需要重新启动,如在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet中所做的修改。

△reg文件的一些说明和用法 1.reg文件字符串值中路径的斜杠要用双斜杠表示,否则导入将无效,即C:\WINDOWS要表示成"C:\\WINDOWS"。 2.要删除某子键,在reg文件中在键的最前面加上“-”,如: [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp] 3.要删除某键值,在值的等号后面加上“-”,如: [HKEY_CLASSES_ROOT\lnkfile] "IsShortcut"=-

△通过inf文件修改注册表 inf文件是Windows的设置信息文件,它一般是用来设置或安装设备驱动、软件配置等信息。更为重要的是,我们可以在inf文件中设定一些语句达到对注册表的修改。这个方法有时非常有用,例如,如果注册表被锁,reg文件不能使用,那么通过inf文件就很容易解决,下面给出一个inf文件修改注册表的例子:

[Version] Signature="$CHICAGO$"

[DefaultInstall] Addreg=Add Delreg=Del

[Add] HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,regedit,0,"regedit.exe" HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoDrives,1,01,00,00,00 HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFileMenu,0x10001,01,00,00,00

[Del] HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools

Addreg定义添加或修改注册表键值的段标题“Add”(名称可以随便取),同理Delreg定义删除注册表键值的段标题“Del”,注意无论Addreg与Delreg顺序如何,Windows总是先处理Addreg再处理Delreg。

修改注册表的语句格式是:“根键,子键,值名,类型,值”。根键使用缩写HKCR(HKEY_CLASSES_ROOT),HKCU(HKEY_CURRENT_USER),HKLM(HKEY_LOCAL_MACHINE),HKU(HKEY_USERS),HKCC(HKEY_CURRENT_CONFIG);数据类型“0”表示字符串值,“1”表示二进制值,“0x10001”表示DWORD值。