12   1  /  2  页   跳转

注册表学习贴(勿灌水)

注册表学习贴(勿灌水)

注册表历史    (信息来源互联网,仅供学习交流使用)





前身



最初,Windows系统及应用程序的信息被存储在后缀名为ini的文本文件中,这就是注册表的前身。但是这么做有着致命弱点:因为每一个程序都会新安装一个或多个ini文件,来存储程序信息,导致信息的分布极为零乱;而且在16位系统下,ini文件的大小必须在64KB之内。所以ini文件被认为不便于使用和管理。





发布与发展



在最早出现于Windows 3.0的OLE技术出现后,微软为了存放系统中大量的软件组件信息,组织了一个reg.dat的数据库来存放这些信息。当时的注册表编辑器为16位版本的regedit.exe,功能较弱





后来开发的Windows NT则更进一步使用相同的文件格式来存放系统的配置信息,以取代原有的ini文件。该系统为每一个用户在用户目录下创建了一个自身的注册表空间,而系统的设置被存放在系统文件夹中。由于Windows NT是一个32位操作系统,regedit.exe被升级为regedt32.exe,并增加了对权限的设置功能





Windows 95中,注册表首次得到广泛应用,逐渐淘汰了原有的ini文件。程序在安装时,不再将数据写入ini文件,而直接写入注册表。为了最大限度兼容旧程序,部分原来用于写入ini文件的专门API函数仍然可用,但现在是将信息写入注册表。Windows 95为了保持和Windows 3.x系列的兼容性,注册表的架构与Windows NT不同,为此专门开发了另一个32位版本的regedit.exe,它没有设置权限的功能。



Windows 2000中,由于Windows 95家族已经深入人心,regedit.exe也得到广泛应用,相反regedt32.exe的界面相对比较丑陋,因此微软将windows 95系列的regedit.exe拿过来用。但由于移植过来的regedit.exe仍没有权限设置的功能,regedt32.exe仍然保留在系统中用作权限设置。



Windows XPWindows Server 2003中,regedit.exe已经增加了权限的功能,regedt32.exe由于失去作用而被剔除。同时,这个版本的注册表是64位的,这导致了一些兼容性问题,少数可以运行在旧版本Windows的程序在Windows XP中无法运作。






(待续、、、、、、)

PS:我也是刚学注册表的,手头也没这方面权威的书,只好去网上搜些资料来提高自己,只要不出意外,每天都会保持更新的。资料方面尽量去粗取精。希望这张帖会成为见证你我学习注册表的历程。


用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TheWorld)

本帖被评分 3 次
最后编辑叶陵君 最后编辑于 2008-08-12 02:35:34
分享到:
gototop
 

注册表作用&打开&数据结构

注册表的作用

注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些

windows应用程序的运行,从而在整个系统中起着核心作用。 这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有

应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的

关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。

具体来说,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息;系统内核从Resistry中选取信息,包括要装

入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等;同时设备驱动程序也向Registry传送数据,

并从Registry接收装入和配置参数,一个好的设备驱动程序会告诉Resistry它在使用什么系统资源,例如硬件中断或DMA通道等,另

外,设备驱动程序还要报告所发现的配置数据;为应用程序或硬件的运行提供增加新的配置数据的服务。配合INI文件兼容16位

Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中—样创建它自己的INI文件

或在Win.ini和System.ini文件中创建入口;同时windows还提供了大量其他接口,允许用户修改系统配置数据,例如控制面板、设置

程序等。
   

如果注册表受到了破坏,轻则使windOWS的启动过程出现异常,重则可能会导致整个windows系统的完全瘫痪。因此正确地认识、使

用,特别是及时备份以及有问题恢复注册表对windows用户来说就显得非常重要





如何打开注册表

在运行处输入 regedit  或 regedit.exe  确定,即可进入注册表编辑器界面,进行相关操作。



注册表数据结构

注册表由键(或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
在注册表编辑器(Regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为,其数据类型为REG_SZ,数据值为%systemroot%/system32/NOTEPAD.EXE "%1


 附件: 您所在的用户组无法下载或查看附件

以上信息的意义是:txt类型的文件在右键菜单里的“打开”一项使用的程序是“NOTEPAD.EXE”,即用记事本打开文件。
最后编辑叶陵君 最后编辑于 2008-08-12 02:26:32
gototop
 

注册表类型与分支

注册表的数据类型主要有以下五种:



显示类型(在编辑器中)数据 
类型
说明
REG_SZ字符串文本字符串
REG_MULTI_SZ多字符串含有多个文本值的字符串
REG_BINARY二进制数二进制值,以十六进制显示
REG_DWORD双字一个32位的二进制值,显示为8位的十六进制值



上面四种属于常见的,注册表还有其他的数据类型,但是均不常用:
  • REG_DWORD_BIG_ENDIAN
  • REG_DWORD_LITTLE_ENDIAN
  • REG_FULL_RESOURCE_DESCRIPTOR
  • REG_QWORD
  • REG_FILE_NAME



注册表的分支


注册表有五个分支,下面是这五个分支的名称及作用:


名称作用
HKEY_CLASSES_ROOT存储Windows可识别的文件类型的详细列表,以及相关联的程序。
HKEY_CURRENT_USER存储当前用户设置的信息。
HKEY_LOCAL_MACHINE包括安装在计算机上的硬件和软件的信息。
HKEY_USERS包含使用计算机的用户的信息。
HKEY_CURRENT_CONFIG这个分支包含计算机当前的硬件配置信息。


最后编辑叶陵君 最后编辑于 2008-08-12 02:08:26
gototop
 

注册表---各根键,子键简介

(1)HKEY_CLASSES_ROOT 根键

HKEY_CLASSES_ROOT 根键包含了启动应用程序所需的全部信息,其中包括:

· 所有扩展名以及应用程序和文档之间的关联信息;

· 所有驱动程序的名字;

· 当作指针的字符串,指向它们代表的实际文件;

· 类标识CLSID,这在访问子键信息时非常有用,因为Windows 中访问子键的信息都是用

· CLSID 来代替的。这里的标识在Windows XP 系统中是唯一的;

· DDE 和OLE 信息。对于每个文件关联都可以使用DDE 和OLE 功能;

· 应用程序和文档使用的图标。


(2)HKEY_CURRENT_USER 根键

HKEY_CURRENT_USER 根键用于管理与当前登录系统的用户有关的信息,其中包括:

· 用户的桌面以及Windows XP 对用户呈现的外观和行为;

· 与所有网络设备的连接,如打印机、共享磁盘空间等资源;

· 桌面程序项、应用程序参数选择项、屏幕颜色等其它一些个人偏好,还有安全权限


(3)HKEY_LOCAL_MACHINE 根键

HKEY_LOCAL_MACHINE 根键保存了运行Windows 的信息,包括应用程序、驱动程序以及硬件信息。
它有5 个独立的子键:

HARDWARE
其中保存了含有计算机硬件信息的子键。在启动系统时,HARDWARE 子键都被重新创建,这样就很容易向系统中添加新硬件了。用户对HARDWARE 子键进行的修改没有任何意义也不会生效,更不用像通过其中的CPU 信息实现超频了。因为它是系统根据硬件信息在启动时自己填写的,而不是根据它的数据去启动硬件。HARDWARE 下的4 个子键中含有CPU、FPU 、系统总线、基于PCI 总线的设备、即插即用总线、高级控制电源接口、键盘、打印机端口、鼠标、屏幕等信息,有些信息(如高级控制电源接口)要在BIOS 中打开才能看到。


SAM:
这是一个关于安全帐号管理器的子键,其中存储着用户信息和域信息。无论是哪种注册表,SAM 中的信息都是不可访问的,只能由系统管理员通过用户管理器进行管理。


SECURITY
这里的信息与本地安全性和用户权限有关,其中含有SAM 子键的备份。它也是用户不能访问的,只能由系统管理员的管理工具修改。

SOFTWARE
其中包含了已经安装的系统软件和用户软件信息。

SYSTEM:
其中含有与系统启动、设备驱动程序、服务和Windows XP 配置有关的信息。



(4)HKEY_USERS 根键

HKEY_USERS 中包含着所有用户配置文件的当前活动用户信息。
其中的.DEFAULT 是为那些没有用户配置文件的登录用户而设置的。
HKEY_USERS 中典型的用户配置文件都包括如下一些子键:

AppEvents :其下的EventLabels 包括与事件有关的信息,而Schemes 则包括一些针对自己使用特定声音方案的应用程序的标签。

Console :包含缺省的命令提示符配置。

Control Panel :包含控制面板上的小程序信息。

Environment :包含当前用户的环境信息。

Keyboard Layout :包含键盘配置信息。

Printers:包含与计算机相连的每一台远程打印机的映射信息。

Software:包含系统中已安装的软件信息。

UNICODE Program Groups :包含的是关于那些使用UNICODE 的程序信息。


(5)HKEY_CURRENT_CONFIG 根键
HKEY_CURRENT_CONFIG 根键是HKEY_LOCAL_MACHINE 中的内容映射。如果系统中只有一个硬件配置,则其中的数据是和HKEY_LOCAL_MACHINE 中一样的。若向系统中新建了一个硬件配置(控制面板→系统→硬件配置文件),就会在HKEY_LOCAL_MACHINE 中反映出来,在启动时会选择一种配置文件映射到HKEY_CURRENT_CONFIG 中。

更多相关子键的信息,请参考瑞星卡卡论坛的精华帖    http://bbs.ikaka.com/showtopic-8120451-1.aspx
gototop
 

如何使用注册表编辑器

注册表本身就是一个大数据库,必须要有专门的编辑器才能打开它,同时注册表又很脆弱,它的一点问题都可能导致系统的崩溃,所以用好注册表编辑器浏览、修改注册表就成了一门基本功,这对提高使用注册表的水平是必不可少的。

<1>----创建项(主键或子键)

在注册表中, 注册表编辑器左窗格显示的是主键或者子键的分层次关系。当然,你也可以在左窗格内创建新的主键(或子键)。


例如,我们需要HKEY_LOCAL_MACHINE\SOFTWARE分支下创建一个“瑞星卡卡论坛”主键,其操作步骤如下:
右击SOTWARE,在弹出的快捷菜单的中选择“新建”--“项”,一个新主键就完成了,可以对新主键进行重命名或其他操作。

 附件: 您所在的用户组无法下载或查看附件





<2>---重命名项


找到我们刚才创建的项,按鼠标右键,则弹出的快捷菜单,选择“重命名”。



 附件: 您所在的用户组无法下载或查看附件





<3>---创建注册表值项数据


我们要在“HKEY_LOCAL_MACHINE\SOFTWARE\瑞星卡卡论坛”分支中加入“RISING=kaka”的键值项数据,可执行如下操作步骤:
1
在注册表中打开“HKEY_LOCAL_MACHINE\SOFTWARE\瑞星卡卡论坛”分支。

2
在右窗格内右键单击要添加新键值项数据的位置,则弹出一个
快捷菜单。
3
在该快捷菜单中指向“新建”,然后单击要添加键值项数据的类型:字符串值、二进制值或DWORD值或可扩充字符串值或多字符串值。例如,我们选择了“字符串值”,此时新键值项数据将以“新值 #1
”显示出来.




 附件: 您所在的用户组无法下载或查看附件


 附件: 您所在的用户组无法下载或查看附件





4
在“新值 #1”框内键入新的键值的名称,如“RISING”,然后按Enter
键.

 附件: 您所在的用户组无法下载或查看附件




5
双击新添加的键值名“RISING”,则弹出如图
所示的对话框。
在“键值”框内输入“kaka”(这是键值项数据中的“键值”部分值),然后单击“确定”按钮.

 附件: 您所在的用户组无法下载或查看附件


注册表的基本操作都在里面,删除项,修改项,相信更容易吧。

下面在说下
<4>查找项或值、数据

 附件: 您所在的用户组无法下载或查看附件

例如我们找我们刚才创建的主键“瑞星卡卡论坛”
如图:


 附件: 您所在的用户组无法下载或查看附件

同理我们查找一些软件卸载没卸载干净的东西可以用这个办法手工清理干净。

其他高级操作在下面帖子中会提到,这里就不再赘述。( 我比较笨,一天不能消化太多东西)

下面的东东,好庞杂, 我要考虑下怎么分类,各位如果有更好的建议请提出来 ,为不影响本帖连贯性,请另开贴说明




后面的我和天云在想下,今天暂时不更新。









最后编辑叶陵君 最后编辑于 2008-08-15 19:00:47
gototop
 

回复: 注册表学习贴(勿灌水)

注册表学习链接:



                                系统优化
                               



                                系统安全



                                系统更改



                                网络设置



gototop
 

注册表实例学习第一期

一次写完一个板块不现实,估计看也很枯燥。。。。。。。故临时决定以分期来出,大家都可以出,一期5个例子,最好自己在机子上或虚拟机上尝试下,给出图解。第一期我先来出吧。希望大家都来参与。

                         

<1>禁止向“开始“菜单中的”文档”保留历史记录
注册表位置

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

键名NoRecentDocsHistory

修改值: 1


 附件: 您所在的用户组无法下载或查看附件

修改后:


 附件: 您所在的用户组无法下载或查看附件





<2>菜单弹出延时设置

注册表位置

HKEY_CURRENT_USER\Control Panel\Desktop


键名 MenuShowDelay    (数据类型--字符串)

修改值:1    (延时1ms)


 附件: 您所在的用户组无法下载或查看附件





<3>  程序出错等待时间设置

注册表位置

HKEY_CURRENT_USER\Control Panel\Desktop

键名:HungAppTimeout    数据类型:字符串

修改值:1    (延时1ms)



 附件: 您所在的用户组无法下载或查看附件





<4>  优化文件系统

注册表位置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

键名:ConfigFileAllocSize    数据类型:双字节值(DWORD)

修改值:1f4 (十六进制)或 500(十进制)



 附件: 您所在的用户组无法下载或查看附件




<5>  去除快捷方式中的小箭头

注册表位置:HKEY_CLASSES_ROOT\lnkfile


键名IsShortcut   (IsShortcut”项是用来控制是否显示普通应用程序和数据文件快捷方式中小箭头的) 
数据类型:字符串 

修改:删除


修改前

 附件: 您所在的用户组无法下载或查看附件


修改

 附件: 您所在的用户组无法下载或查看附件


修改后,注销一次(不知刷新可以不)


 附件: 您所在的用户组无法下载或查看附件

最后编辑叶陵君 最后编辑于 2008-08-16 15:31:57
gototop
 

注册表学习第2期

<11>  彻底xxx 135 、139、445  端口   
怎么大家都不参与呢?(这里感谢金星王子积极参与并为我提供有用的资料)

用策略去封这几个端口似乎不尽人意,你用netstat -an 依然可以看到135、139、445这三个端口在监听状态。在网上找了一些文章,其中就有关于用注册表来封这三个危险端口的,试验后135、139和445已经不再监听了。以下是这三个端口的具体关闭方法。

下图为刚装系统的端口开放情况。


 附件: 您所在的用户组无法下载或查看附件

可看到这几个端口都在监听,即端口是开放状态。



关闭135:

注册表位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole

值名EnableDCOM

修改值N


 附件: 您所在的用户组无法下载或查看附件



注册表位置: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc 

值名DCOM Protocols

修改值删除“ncacn_ip_tcp”

 附件: 您所在的用户组无法下载或查看附件

注:还需要停用“Distributed Transaction Coordinator”服务。 

 附件: 您所在的用户组无法下载或查看附件
重启之后, 135端口就没有了。






关闭139:

在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性,进入“高级TCP/IP设置”“WINS设置”里面有一项“禁用TCP/IPNETBIOS”,打勾就关闭了139端口。



 附件: 您所在的用户组无法下载或查看附件











关闭445:

注册表位置HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\NetBT\Parameters

右键单击,选择“新建”——“DWORD值”
将DWORD值命名为“SMBDeviceEnabled”


键名  SMBDeviceEnabled    数据类型 :DWORD值

修改值: 0


 附件: 您所在的用户组无法下载或查看附件



重启之后,445端口就关闭了。


在虚拟机上如法炮制一番,见下图:

 附件: 您所在的用户组无法下载或查看附件
gototop
 

登陆选单显示ADMINISTRATOR超级用户


登陆选单显示ADMINISTRATOR超级用户

图解该实例修改过程


如果我们机子设立了多个管理员帐户,你在登录XP时会发现,只有最后一个设立的管理员提供你登录。来看看是不是这样?

设立一个管理员帐户“cheng”,然后重启。



 附件: 您所在的用户组无法下载或查看附件



发现只有cheng 让你选择登录。 (与2000及2003系统不一样)

 附件: 您所在的用户组无法下载或查看附件


要是想用Administrator 咋办,注册表可以帮你。

注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\SpecialAccounts\UserList

键值名:Administrator      (在右边窗口新建)  数据类型:DWORD
修改值:00000001               

如下图所示:


 附件: 您所在的用户组无法下载或查看附件


 附件: 您所在的用户组无法下载或查看附件


关闭注册表,重启看看。

 附件: 您所在的用户组无法下载或查看附件

OK,可以了,试试吧。实践出真知。
gototop
 

解禁注册表

解禁注册表 




 附件: 您所在的用户组无法下载或查看附件



相信在网吧玩游戏的朋友比较会遇到这种情况,注册表被禁用了。


如何解:

组策略很多项目和注册表都是对应的。咱们用组策略去解禁。 (运行---gpedit.msc---确定)

方法:

 附件: 您所在的用户组无法下载或查看附件



 附件: 您所在的用户组无法下载或查看附件


然后去试试regedit,可以用了吧  (有时候策略不能及时刷新,可以在运行输入gpupdate /force----用来强制刷新所有策略)

那注册表该如何更改呢?


 附件: 您所在的用户组无法下载或查看附件

怎样禁用注册表?
注册表位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

新建一个键值名为:DisableRegistryTools  数据类型:DWORD 

修改值: 1


这样修改后,你发现你的注册表又不能用了。。。。。。知道原理了吧,就是那个修改值,如果改成0
,又可以打开注册表了。

不用组策略,改怎样改呢。我们可以用REG文件双击导入注册表,可以起到同样的效果。

打开一个记事本:
输入如下内容
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableRegistryTools"=dword:00000000

保存为  reg  为后缀的文件, 双击导入注册表。

(发现个问题,我双击导入注册表,依然显示被禁用。sp3的不行么?还是网上的方法是错误的?明天在看看,睡了。。。。

临时找了下原因,应该是这个原因http://hi.baidu.com/bingying2046/blog/item/cec47f23edc1ea42ad34de53.html,我如果从其他没有被禁用注册表的机器上拷来一份解禁注册表的REG文件,就可以顺利解开。
最后编辑叶陵君 最后编辑于 2008-08-22 04:13:06
gototop
 
12   1  /  2  页   跳转
页面顶部
Powered by Discuz!NT