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