使用inf文件修改注册表

简单地说,INF(Information)文件是告诉Windows如何安装某硬件或软件的信息文件。INF文件告诉操作系统要拷贝哪些文件到哪些地方,要删除系统中的哪些文件,要修改Autoexec.bat和Config.sys的哪些地方,以及要修改注册表的哪些主键。而通过INF修改注册表,就是我们今天所要说的。

  修改注册表何需编写INF文件?比如REG文件就可以很方便地修改注册表。但是许多时候人们为了安全,修改了REG文件的关联使之无法双击执行,更何况REG文件还有个致命的弱点:它可以写但却不能删除注册表项。而INF文件不但能写,而且能删--这样就不至于在注册表中留下垃圾项目了。

  Windows文件夹下有一个叫INF的隐藏子文件夹,里面有一大堆INF文件。这种类型的文件内容是纯文本的,双击即可用记事本打开。

  INF文件是由节(Section)组合而成的(如图),节是用来定义相关命令或信息的一个集合,节名以“[]”来包括,名称不可重复。对于只想用它来修改注册表的普通用户来说,必不可少的节只有三种:[Version]节、[安装节]以及安装节命令中所制定的[参考节].

  1.Version节

  首先是[Version]节,它负责定义WindowsINF文件的相关信息。语法如下:

  [Version]

  Signature=“$CHICAGO$”

  如果我们仅仅是想利用INF文件来修改注册表项的话,有这句就够了。Signature:签名。在Windows9X中此值设置为$CHICAGO$(CHICAGO是Windows95开发计划的名称),而在WindowsNT/2000中则应设置为$Windows NT$.

  2.安装节

  安装节的名称一般为[DefaultInstall].它用来设置安装软件或驱动程序所要运行的命令,而运行命令所需要的相关信息定义在其后指定的参考节中。安装节的语法如下:

  [DefaultInstall]

  AddReg=新建注册表节[新建注册表节]…

  DelReg=删除注册表节[删除注册表节]…

  安装节支持的命令很多,我们这里只介绍与注册表操作有关的两项:AddReg和DelReg.每个命令可有几个参考节,参考节用“[]”括起来,但节名之间要用逗号来隔开。

  AddReg命令的功能是增加子主键或键值数据到注册表中,而DelReg命令则可删除注册表中的子主键或键值数据。语法如下:

  AddReg=新建注册表节

  DelReg=删除注册表节

  3.新建注册表节

  新建注册表节和删除注册表节的语法如下:

  [新建注册表节]

  根键,[子主键],[键值名称],[标记],[键值]

  [删除注册表节]

  根键,子主键,[键值名称]

  关于AddReg命令相关的参数设置说明如下:

  ①[根键]的参数使用缩写:HKU表示HKEY_CLASSES_ROOT,HKLM表示HKEY_LOCAL_MACHINE,HKCU表示HKEY_CURRENT_USER,HKCR表示HKEY_CLASSES_ROOT.还有一个HKR,我们一般用户不会用到,这里就不多说了。

  ②[子主键],可选项。各层之间用反斜杆(/)隔开,但开头和结尾处都不要有反斜杆。

  ③[键值名称],可选项。如果该项的位置空着,而且[键值]项也为空,则只建立[子主键]中指定的子主键,但内容为空。如果[键值]项不为空,则将[键值]项中指定的数据设置为子主键的“默认值”.

  ④[标记],可选项。该项指定键值的类型(字符串值或二进制值)及指定如果我们所要设置的键值在注册表中已经存在,是否用我们设置的值来替换已存在的值。该项的参数共有四种:0、1、2、3.

  0为缺省值,表示设置的键值类型为字符串,如果已经存在同样的键值名称,仍可用我们设置的键值来替换;

  2表示设置的键值类型为字符串,如果已经存在同样的键值名称,则不用我们设置的键值来替换;

  1表示设置的键值类型为二进制值,如果已经存在同样的键值名称,仍可用我们设置的键值来替换;

  3表示设置的键值类型为二进制值,如果已经存在同样的键值名称,则不用我们设置的键值来替换。

  大家都知道,Win9X的注册表的键值类型有三种,字符串值、二进制值和十六进制值,但是十六进制值其实完全可以用二进制值来代替。所以INF只支持设置字符串值或二进制值两种键值类型。

  ⑤[键值]项的参数可以是字符串(当[标记]项为0或2时),也可以是以字节形式表示的十六进制数(当[标记]项为1或3时).注册表支持最长为128个字节的二进制值。与REG文件不同的是,每个字节之间必须用逗号(,)隔开。另外还必须注意采用Intel的数据格式,即低位在前、高位在后。例如我们想在HKCU下建立一个名为test的子主键,并在其下建立一个名为TT的二进制值,键值为1000ff00,则应使用如下格式:

  HKCU,test,TT,1,10,00,ff,00

  注意,可选项可以省,但逗号是绝对不能省的!

  DelReg的参数设置,比较简单,可参考AddReg的语法。惟一需要说明的是,如果可选项[键值名称]为空时,删除的就不是键值而是指定的整个子主键了。

  4.实例

  下面我们用Verona.inf来举例说明。该文件用来自动清除被Verona.B蠕虫病毒(即罗密欧与朱丽叶)更改了的注册表中的文件关联。注意,在INF文件中,以“;”开始的语句为文件内容的注释

  [Version]

  Signature=“$CHICAGO$”;这一句必不可少。

  [DefaultInstall]

  DelReg=Del_VeronaB

  ;指定要删除的注册表子主键定义在[Del_VeronaB]节

  AddReg=Fix_VeronaB

  ;修改/增加注册表的主键定义在[Fix_VeronaB]节

  [Del_VeronaB]

  ;参考节,节名由安装节中的相应语句指定

  HKCR,rnjfile

  ;删除根键HKEY_CLASSES_ROOT下的子主键rnjfile

  ;“键值名称”项参数被省略,表示删除的是整个子主键而非子主键下的键值

  [Fix_VeronaB]

  ;参考节,节名由安装节中的相应语句指定

  HKCR,.exe,0,“exefile”

  ;修改HKEY_CLASSES_ROOT/.exe子主键的“默认值”

  ;为字符串值,键值的数据为“exefile”

  HKCR,.reg,0,“regfile”

  现在我们可以打开记事本,输入编写好的内容,注意保存时必须选择“保存类型”为“所有文件”,在“文件名”处输入你取的文件名,扩展名当然必须为“.INF”.

  最后要说明的是,执行INF文件的方法和其他文件的方法有些不一样,即INF文件不能直接双击执行(双击时是用记事本来打开),而必须先鼠标右击,然后选择“安装”即可。

  本文仅涉及INF文件有关注册表设置的部分格式和命令,如果大家希望对INF文件有进一步的了解,可以在Win95安装光盘(Windows98里可没有哦)上找到一个名为Win95rk.hlp的帮助文件,里面有关于INF文件的英文详细说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值