代码改变世界

怎样编写注册表reg文件

2011-07-06 17:03  田志良  阅读(...)  评论(... 编辑 收藏

  假设问题是:“Regedit”已经被锁住了,我们从“开始→运行→Regedit”按确定之后,出现“注册表编辑已经被您的系统管理员停用”。如何才能解除这个限制呢? 因为限制不准用户执行“Regedit”的注册表信息是: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System中的 “DisableRegistryTools”这一项值。因此只要我们把“DisableRegistryTools”的值设为“0”(代表关闭),或是干脆把System这个注册表信息删掉(干净的操作系统本来就没有此信息)就行了。那这个REG文件怎么写,才能让“Regedit”顺利把其中的信息导入注册表呢?方法如下: 


1、制作REG文件 
  新建一个文本文件,在其中输入以下内容: 

REGEDIT4 

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] 
"DisableRegistryTools"=dword:00000000 
  注意:“REGEDIT4”这行与后面行之间要有一空行。 
  编辑好了以后,为文件取个名字储存,如“unlock.reg”并保存(存盘时请记得在记事本的存盘对话框中的“保存类型”要选择“所有文件(*.*)”,否则会被当作TXT文件的)。

2、导入REG文件 
  因为在Windows环境下,已经没有办法执行“Regedit”,所以就要改成从DOS下执行此命令。方法是“开始→程序→MS-DOS方式”。当然,你想用启动盘开机,从纯DOS下执行也行,只是不需要这么麻烦,用Windows中的MS-DOS方式即可。 
  假设我的这个unlock.reg是放在C:\TEMP的话,就输入regedit c:\temp\unlock.reg后按回车。接着画面上会出现“您确定要增加 c:\temp\unlock.reg信息到注册表”的对话窗——按“确定”,“unlock.reg”的内容就输入注册表了,同时也就解除了无法执行“Regedit”的限制了。 

3、举一反三 
  REG文件为什么要以“REGEDIT4”开头,而不是“REGEDIT1”或“REGEDIT2”呢?因为这是“规定”。Windows 95/98/ME/NT 4.0等的REG文件开头第一行规定必须是“REGEDIT4”。而Windows 2000/XP则是“Windows Registry Editor Version 5.00”,用以区分所使用的操作系统。从这个REG文件中,我们可以了解REG文件的内容格式: 
1、开头第一行一定是:“REGEDIT4”或“Windows Registry Editor Version 5.00”,以区别操作系统; 
2、注册表信息头尾用“[”与“]”包起来; 
3、" "内就是字符串内容; 
4、“DWORD”为“0”就是用“dword:00000000”表示,因为“DWORD”值是16进位,16进位的“0”就是“00000000”。 
5、因为本例中只有一行注册表信息([HKEY_CURRENT_USER\Software\Mi...]),所以没有空行。而如果有两个以上的注册表信息,信息与信息之间就需要有空行隔开。 
6、如果要删除某个注册表信息该怎么办?很简单,在注册表信息前面加上“-”(减)号。例如,“unlock.reg”我也可以这么写: 
REGEDIT4 

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
只要“-HKEY_CURRENT_USER\Soft...”就可以了,“DisableRegistryTools...”那一行就可以省去不写,为什么?因为这行就是告诉“Regedit”直接去把“System”这个注册表信息删掉,而“DisableRegistryTools”又是在“System”下,头都删了,当然里面的东西也就消失了。