分享

Inf文件语法及书写规范

 hexp0409 2013-03-14

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建立名为教程,类型为字符,键值是终于结束了^_^的子键

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多