reg文件编写方法整理

晨曦之光 发布于 2012/05/16 17:15
阅读 418
收藏 0

假设问题是:“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”的限制了。

三、学会举一反三

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”下,头都删了,当然里面的东西也就消失了。</CA>


注册表reg文件编写

  


       有的时候为了方便修改注册表,会制作一些脚本,如inf文件或者vbs脚本等。其中.reg文件是最方便的。

       关于注册表的操作,常见的是创建、修改、删除。下面以2k or xp的注册表为环境为例,介绍.reg文件的编辑(98的.reg文件头是regedit4)。

--创建--
创建分为两种:
       1 一种是创建子项(subkey)
       首先创建一个文件,后缀名为".reg",内容如下:
windows registry editor version 5.00
[hkey_local_machine/software/test4adam]
      然后执行该脚本,你就已经在hkey_local_machine/software/下创建了一个名字为“test4adam”的子项。
      (注:"windows registry editor version 5.00" 必须要加上,同时注意单词间的空格为英文空格,否则运行后会出现错误,提示"你的注册表只能导入二进位注册文件"。)
      2 另一种是创建一个项目名称
      和从注册表中导出的文件格式一致,内容如下:
windows registry editor version 5.00
[hkey_local_machine/software/test4adam]
"test1"="adam"
"test2"=hex:61
"test3"=dword:00000064
(注:test1的类型是“string value” ,如果不存在则创建,存在则修改。
   test2的类型是“binary value” ,如果不存在则创建,存在则修改。
   test3的类型是“dword value” ,如果不存在则创建,存在则修改。
   如果注册表中不存在test4adam子项,该脚本也会创建该子项。
   字符串值中的特殊字符必须进行转义处理,如'/'利用'//'代替,否则会出现更新无效。 )

--删除--
1 删除一个项目名称,创建一个如下的文件,文件名后缀为".reg":
windows registry editor version 5.00
[hkey_local_machine/software/test4adam]
"test1"=-
执行该脚本,hkey_local_machine/software/test4adam下的"test1"就被删除了;

2 删除一个子项,创建一个如下的脚本:
windows registry editor version 5.00
[-hkey_local_machine/software/test4adam]
执行该脚本,hkey_local_machine/software/test4adam就已经被删除了。

附:批处理文件命令导入注册表文件
       例如程序是E盘的regedit_2k.reg文件,执行的程序是E盘劲舞团目录的patcher.exe
       下面是NT用的批处理文件内容:
       @echo off
       reg import e:/regedit_2k.reg
      start E:/劲舞团/patcher.exe
      exit

 

Windows XP注册表文件除了可以用注册表编辑器、工具软件修改外,还可以直接用记事本制作REG文件脚本来直接修改,其优势是可以文件形式保存、交流,也保证了准确性和安全性。下面我们分别从注册表项(子项、值项)的创建、修改、删除3个方面分析REG文件的制作。

1.创建和修改

(1)创建子项

我们现在需要在HKEY_LOCAL_MACHINE/SOFTWARE下创建一个名为"IvanLuo"的子项,则只须在记事本中输入以下内容(右图):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo]

将其保存为任一扩展名为REG的文件(如ivan.reg),双击其就可以在HKEY_LOCAL_MACHINE/SOFTWARE/下创建名为"ivanluo"的子项。

(2)创建或修改值项

现在要在HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo下新建一个名为"ivan"(如注册表中已有ivan值项,则为修改)、类型为"REG_DWORD"、值为"111"(16进制)的值项,则可在记事本中输入以下内容:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo]
"ivan"=dword:111

将以上文档保存为一个REG文件并双击之,如果此时你的注册表中没有IvanLuo这个子项,那么将会为你创建。修改时也可把需要修改的注册表项导出,用记事本打开并修改,然后将其导入即可。

2.删除

(1)删除值项

如要将HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo/下名为"ivan"的值项删除,相应REG文件的内容为:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo]
"ivan"=-

(2)删除子项

或要删除HKEY_LOCAL_MACHINE/SOFTWARE下的IvanLuo子项,REG文件如下书写:

Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE/SOFTWARE/IvanLuo]

以上便是REG文件制作的全部内容,很简单吧!如果还有什么不懂的地方,只须将注册表中一项导出为REG文件,然后用记事本打开,对照注册表编辑器中的相应项看看便明白了。

 

例子:

REGEDIT4

[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop]

"财务管理"="Image/index/BIS-index_08.gif;Image/index/BIS-index_08-1.gif;"
"GPS定位"="Image/index/BIS-index_12.gif;Image/index/BIS-index_12-1.gif;"
"出城登记"="Image/index/BIS-index_16.gif;Image/index/BIS-index_16-1.gif;"
"二手车"="Image/index/BIS-index_20.gif;Image/index/BIS-index_20-1.gif;"
"黑名单"="Image/index/BIS-index_22.gif;Image/index/BIS-index_22-1.gif;Blacklist.aspx"
"考试系统"="Image/index/BIS-index_14.gif;Image/index/BIS-index_14-1.gif;http://www.haodishi.com/ks/"
"违章记录"="Image/index/BIS-index_18.gif;Image/index/BIS-index_18-1.gif;ViolationRecords.aspx"
"预约服务"="Image/index/BIS-index_10.gif;Image/index/BIS-index_10-1.gif;"

[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList]

"1"="财务管理"
"2"="预约服务"
"3"="GPS定位"
"4"="违章记录"
"5"="考试系统"
"6"="出城登记"
"7"="二手车"
"8"="黑名单"

[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonNum]

"ButtonNum"="8"

[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/GPS定位]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/财务管理]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/出城登记]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/二手车]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/黑名单]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/考试系统]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/违章记录]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/预约服务]

[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/GPS定位]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/财务管理]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/出城登记]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/二手车]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/黑名单]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/考试系统]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/违章记录]
[HKEY_LOCAL_MACHINE/SOFTWARE/MainMenuTop/ButtonList/预约服务]

 

注意:1.在2003系统上发布(日志) 在访问注册表的时候提示System.Security.SecurityException: 不允许所请求的注册表访问权

 解决System.Security.SecurityException: 不允许所请求的注册表访问权

2003 server系统,装了.net2003 和 2005以及企业库2005之后,以前的2003版的程序有的就会报上述错误。在网上搜了很多方法,把匿名访问去掉再勾选或者重新编译企业库等方法都试过都没有解决。尝试了以下两个操作后居然成功了:

a) 进入   HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Eventlog   目录   点击   安全=>权限   将来宾用户和aspnet用户设为完全控制;

 b)在HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Eventlog/application下建立一个新键EnterpriseManager

c)重起iis,测试

 

2.把要访问的注册表的项添加aspnet用户并且赋给他完全控制权限


原文链接:http://blog.csdn.net/maji9370/article/details/4318361
加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部