简单地说,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文件的英文详细说明。
使用inf文件修改注册表
最新推荐文章于 2023-12-14 17:06:32 发布