Inf文件简介:INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。
如图1:
运行inf文件的2种方法:
GUI界面下右键点击inf文件>安装
命令行下相关格式:RunDll setupx.dll,InstallHinfSection section reboot-mode inf-name
命令行实例:rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1 (*.inf)
其中,rundll程序以命令行的形式调用Windows的动态链接库,其命令格式为:
{
rundll.exe <DLL文件名>,<入口点>,<调用参数>
setupx.dll是安装API(Setup API)函数库,包含了InstallHinfSection、SetupGetInfSections、SetupInstallFromInfSection、SetupPromptForDisk、SetupDiCreateDevRegKey等INF文件内部语法检查、节名搜索、注册键创建等功能函数。setupx.dll与其后的入口点用逗号(,)分开,入口点是大小写敏感的。 Section是INF文件内初始执行节名,首先执行该节内容,默认情况下名称为“DefaultInstall”,系统用户一般不宜对此做任何改动,如被改动,则在后续INF文件的Install节使用相应修改后的名称。reboot-mode是重启动参数,指示在INF文件执行后对系统的设置进行了改变,操作系统是否重新启动。该参数一般设为132或4,即由安装程序决定是否必须重启动,因为某些设置的改变必须在重启动后才能生效。inf-name是INF文件的名称,“%1”即为所选中文件本身。
}
Inf语法和格式相关:
节-inf中的标准结构形式,编写时一般按一定的规律进行书写。
大小写-inf文件对大小写不敏感,即不区分大小写。
注释-inf文件以”:”为注释行开始标示,以”’”或”%”闭合。
分割符-inf文件使用”,”将各项参数进行分割,若参数为空可以省略。
空格-inf文件使用”_”来标示字符串及关键字中的空格。
行连接符-inf文件使用”\”作为行连接符,当书写代码时代码过长,需在换行处添加\符号关联语句。
引号-用于闭合路径中的空格。
以下对注释、分割、行连接、引号进行演示
图2:
Inf节及文件格式相关:
PS:想了想因为主要讲inf文件应用于反病毒,所以驱动相关的参数在此不做解释。
首先介绍的当然是inf的文件格式:
INF文件的组成有节(Sections),键(Key)和值(value)三部分。
关键节有
[Version]版本描述信息,主要用于版本控制。
[Strings]字符串信息,用于常量定义。
[DestinationDirs]定义系统路径信息。
[SourceDisksNames]指明源盘信息。 //不在本文内容之中
[SourceDisksNames]指明源盘文件名。 //同上
[DefaultInstall]开始执行安装。
本文以节为注重介绍对象。
[Version]头,类似以[]包含的字符串称为节名,[Version]头在inf文件中为重要参数,不的省略,节名带有唯一性,不得重复,对于NT系统来说节名不能超过255字节,节名与其下的语法构成节,作为inf文件的重要主成部分。
下面来逐个介绍节名及其固定语法:
[Version]
属于必选项,书写在inf文件头,该节的相关参数为Signature。
;Signature:必选项,指定inf对应的操作系统。
[Version]演示
图3:
//操作系统类型2边的$符不能漏!
[Strings]
可选项,时常用于简化inf文件的复杂程度,减轻编写者的负担,相关参数为string_key。
;string_key:用户自定义关键名称。
[Strings]演示
图4:
//引用时由%闭合,后面会有演示。
[DestinationDirs]
可选项,对目标文件或源文件进行系统路径的定义,用于复制、删除、新建文件,需要与DefaultInstall关联。
[DestinationDirs]演示
图5:
//图为[DestinationDirs]节的一般格式,其中COPY为[DefaultInstall]自定义参数名称,0为标号,用于简化[DestinationDirs]的书写,其中0的意思是指定目录,E:\即指定的目录。
标号相关
图6:
红色的那个我没找到。。。。。。。。。-。-不知道是什么目录。
[DefaultInstall]
必选项,inf文件的主体节,由用户自定义子节类型及节名。
相关功能如下:
LogConfig Log日志文件配置
Copyfiles 复制文件
Renfiles 文件改名
Delfiles 删除文件
AddReg 添加注册项
DelReg 删除注册项
其中我挑选复制文件和添加注册表项想大家介绍。
Copyfiles的使用
;首先定义一个子节,用”=”赋值,并为其定义节名,
格式如下:dest_filename,soure_filename,,flags
;dest_filename:必选项,指定被复制文件所要存放的文件路径及文件名(源目录可以省去文件路径 //下同)。
;soure_filename:可选项,指所需复制的文件名,如省去此项,则使用dest_filename所指定的文件名为源文件名。
;flags:可选项,用于指定复制过程中所遵循的操作参数,如不添加flags值系统默认为0(0为系统默认值)。
使用方法如下
图7:
相关flags值
图8:
// Renfiles、Delfiles类似。
AddReg的使用
;首先定义一个子节,用”=”赋值,并为其定义节名,
格式如下:reg_root_string,subkey,value_name,flags,value
;reg_root_string:必选项,代表注册表根键的缩写。
;subkey:必选项,用于指向reg_root_string值所规定的注册表路径,其中值得注意的是,如果指定路径中不存在注册表项则新建,根键下不得新建项
;value_name:可选项,指定添加键的名称,若省略则使用系统默认值。
;flags:可选项,用于指定注册表键值的类型。
;value:可选项,用于指定注册表键值的数值。
使用方法如下
图9:
相关flags值
图10:
// DelRegl类似。
------------------------------------------无敌分割符------------------------------------------------
经过上面的讲解,差不多反病毒相关的inf知识都已经说到了,那么我简单的演示下。
实例:
[Version]
Signature=$windows NT$ //系统类型为NT
Provider=des7791 //制作者des7791
[Strings]
Reg_sz=0x00000000 //用Reg_sz替代0x00000000
Path=C:\ //用Path替代路径C:\
[DestinationDirs]
COPY=0,%path% //引用Path指定目标目录为C:\
[DefaultInstall]
Copyfiles=copy //定义Copyfiles子节名为copy
Addreg=add //定义Addreg子节名为add
[copy]
Kingzoo.txt,des7791.txt,,0 //复制当前路径的des7791.txt到C:\命名为kingzoo.txt
Kingzoo.jpg,e:\des7791.jpg,,0 //复制路径为e:\的des7791.jpg到C:\命名为kingzoo.jpg
[add]
HKLM,SOFTWARE\des7791,教程,%REG_SZ%,终于结束了^_^ //在HKLM\SOFTWARE\des7791引用Reg_sz建立名为教程,类型为字符,键值是终于结束了^_^的子键
联系客服