INF文件语法及书写规范

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= w i n d o w s N T windows NT windowsNT //系统类型为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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值