📄 解剖inf文件的结构.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>INF是Device INFormation File的英文缩写</title>
</head>
<body>
<div class="postTitle">
<a id="viewpost1_TitleUrl" href="http://www.cnblogs.com/ttyp/archive/2005/07/21/197074.html">INF文件格式小结</a>
</div>
<div class="postText">
<div twffan="done">
INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。
</div>
<div twffan="done">
</div>
<div twffan="done">
<strong>INFI的功能</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
1 复制文件、删除文件、或重新命名文件。<br>
2 新增或删除注册表(Registry)中的项目。<br>
3 修改重要的系统设置文件(如 Autoexec.bat、Config.sys、.INI
等)
</div>
<div twffan="done">
</div>
<div twffan="done">
<strong>INF的规则</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
INF是纯文本文件,它是分节的,这点和INI文件类似,每节以"[]"扩起来,每一个节名最长为255个字符
(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都由=分开,如a="b"。如果每一个条目的等号后有多个值,
则每一个值之间用","号分隔开。INF对大小写不敏感,行注释语句命令是";",类似VB里的'。如果一行写不下,使用"\"来换行。
</div>
<div twffan="done">
</div>
<div twffan="done">
<strong>INF的运行</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
.INF文件是由Windows的SetupAPI解释执行的脚本文件,它的运行过程很简单,是一种线性的执行,
线性的意思就是.INF文件的运行过程不存在分支语句,也就是没有条件语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节为单位来执行的,从
某一个[Install]节开始执行,从上到下执行该节中的条目,如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。在WINDOW上运
行只要右击这个文件,点击安装即可。
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
<strong style="font-size: 12pt;">INF的语法结构</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
<span style="color: rgb(0, 0, 255);">;指定版本和签名节<br>
</span>[VERSION]<br>
;系统根据Signuture看是不是适合当前版本,如果适合的话就执行,否则不执行,当然强制安装是可以的<br>
;用于WIN9X<br>
Signature="$CHICAGO$"<br>
;WINNT+<br>
;Signature="$Windows NT$"
</div>
<div twffan="done">
</div>
<div twffan="done">
;指定安装文件布局<br>
该行是可选的,如果没有提供布局信息文件,则在INF文件内必须包含[SourceDisksNames]和[SourceDisksFiles]节<br>
LayoutFile=filename.inf
</div>
<div twffan="done">
</div>
<div twffan="done">
[SourceDisksNames]节<br>
[SourceDisksNames]节罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。<br>
[SourceDisksNames]节内语句的语法为:<br>
disk-ordinal=“disk-description”,disk-label,disk-serial-number<br>
其中disk-ordinal为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。<br>
disk-description为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。<br>
disk-label为源盘的卷标识。<br>
disk-serial-number未使用,但必须被设置为0。<br>
[SourceDisksFiles]节<br>
[SourceDisksFiles]节指定安装时使用的源文件和盘符序列码、盘描述符。
[SourceDisksFiles]节内语句的语法为:<br>
file-name=disk-number[,subdir] [,file-size]<br>
其中file-name为必选项,是源盘上文件的名称。<br>
disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。<br>
Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。<br>
file-size为可选项,表明文件的大小,以字节为单位。
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
<strong>[DestinationDirs]</strong><br>
;指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录<br>
;语法file-list-section=LDID,[Subdir]<br>
;LDID列表如下:<br>
;01 ;current directory<br>
;04 ;backup directory<br>
;10 ;windows directory<br>
;11 ;system dir<br>
;12 ;iosubsys<br>
;13 ;command<br>
;14 ;control panel directory<br>
;15 ;printers directory<br>
;16 ;workgrou dir<br>
;17 ;inf dir<br>
;18 ;help dir<br>
;19 ;administration dir<br>
;20 ;fonts<br>
;21 ;viewers<br>
;22 ;vmm32<br>
;23 ;color dir<br>
;25 ;shared dir<br>
;26 ;winboot<br>
;28 ;host winboot<br>
;30 ;root of boot drive<br>
;31 ;root of host drive of a virtual boot drive<br>
;32 ;old windows dir if exists
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;以下例子为安装到window\web目录下<br>
;DefaultDestDir=10,"web"
</div>
<div twffan="done">
</div>
<div twffan="done">
<strong>[Install]<br>
</strong>提供了一个INF文件安装过程的总览,它识别文件内其他包含安装信息节的详细动作,是Windows内建安装函数识别安装过程和内容的真正入口[Install]
</div>
<div twffan="done">
</div>
<div twffan="done">
;[Install]节分[DefaultInstall]和[OtherInstall]两类<br>
;[DefaultInstall]节节名DefaultInstall如前面表格内容所述被显式地在注册表中指定。<br>
;该节也是系统获取INF文件中安装信息的首要入口,当用户右击INF文件选“安装”时该节内容被执行。<br>
;[OtherInstall]与[DefaultInstall]节遵循相同的语法,但必须被显式地调用,常被用来定义反安装动作
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;缺省安装节<br>
<strong>[DefaultInstall]</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
;指明添加注册表的子节,等号后面的为自定义节名,例子见[add]节<br>
ADDREG=add
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;指明要删除的注册表子节,等号后面的为自定义节名<br>
DELREG=del
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;指明要要复制的文件子节,用于安装,Copyfiles命令可以替换系统正在访问的文件。这些功能通过普通的del和copy命令都无法实现<br>
CopyFiles=cfile
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;指明要要删除的文件子节,用于反安装,多个节以逗号隔开,该命令如果发现要删除的文件被锁定,就会把文件放到系统删除队列中排队<br>
;等系统重启动的时候,该文件就自动被删除了<br>
<strong>DelFiles=删除文件段<br>
</strong>;[删除文件段]<br>
;文件名列表<br>
;例子:<br>
;a.exe<br>
;b.sys
</div>
<div twffan="done">
</div>
<div twffan="done">
;重命名文件段<br>
<strong>RenFiles=重命名文件段</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
;[重命名文件段]<br>
;语法:<br>
;[file-list-section]<br>
;new-file-name,old-file-name<br>
;file1,file2 ;修改文件名file1为file2
</div>
<div twffan="done">
</div>
<div twffan="done">
<br>
;更新INI文件段内容子节<br>
<strong>UpdateInis = 更新INI文件段</strong>
</div>
<div twffan="done">
</div>
<div twffan="done">
;[更新INI文件段]<br>
;ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags]<br>
;ini-file 包含要更改条目的 .ini 文件名<br>
;ini-section 包含要更改条目的节名<br>
;old-ini-entry 可选,常用形式为 Key=Value<br>
;new-ini-entry 可选,常用形式为<br>
;Key=Value。flags 是可选操作标记
</div>
<div twffan="done">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -