标题：INF
INF简介
一般我们总是认为INF文件是系统设备的驱动程序，其实这是错误的认识，Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样，我们就是Windows系统，说明书就是INF文件。INF文件功能非常强大，几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底下的超强批处理。要熟练掌握和理解甚至是编写INF文件需要对其内部结构有相当的认识。INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中，源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序，都是通过INF文件，正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候，INF文件将会自动调用。而在其他场合下，则需要在INF文件上点击鼠标右键，然后选择“安装”，你才能顺利安装应用程序。
在C：/Windows/INF文件夹中存放有大量的INF文件。该文件夹一般处在隐含状态，如果你想查看该文件夹，可选择“查看→文件夹选项→查看”，然后在“文件和文件夹”选项下选择“显示所有文件”。
数学符号
inf，表示下确界，英文名infimum。
对于函数y=f(x),在使f(x)大于等于M成立的所有常数M中,我们把M的最大值max(M)(即函数y=f(x)的最小值）叫做函数y=f(x)的下确界。 
下确界:在所有那些下界中如果有一个最大的下界,就称之为M的下确界。
INF规则
INF文件其实是一种纯文本文件，可以用任意一款文本编辑软件来打开进行编辑，如：记事本、写字板等。INF文件有一整套的编写规则，每一个INF文件都是严格按照这些规则来编写的。规则一INF文件是分节的，每一个INF文件有许多的节组成，节名用方括号括起来。这些节名有些是系统定义好的，有一些是用户自定义的。每一个节名最长为255个字符（Windows 2000/XP/2003操作系统中）或28个字符（Windows 98操作系统中）。节与节之间没有先后顺序的区别，另外，同一个INF文件中如果出现两个同样的节名，则系统会自动将这两个节名下面的条目合并到一起。规则二在节与节之间的内容叫条目，每一个节又是由许多的条目组成的，每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值，则每一个值之间用“，”号分隔开。规则三INF文件对大小写不敏感。规则四“;”号后面的内容为注释。规则五如果一个条目的内容过多，在一行无法书写完全，则用“\”将一行内容书写为多行。
INF结构
明白了INF文件的规则后，让我们一起来解剖INF文件的结构。
1．Version节
每一个INF文件都包含一个这样的节，该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature="$CHICAGO$"”这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统，如果包含“signature="$Windows NT$"”这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统，而且两者必具其一。
另外，该节中“CLASS”条目很重要，它表明了设备的类型，常见的类型有：Display（显示设备，如显卡）、Media（多媒体设备，如声卡）、Net（网络设备，通常是网卡）、Modem（调制解调器）、Printer（打印设备）、Image（图像捕获设备，如摄像头）。
2．Manufacturer节
该节中的条目主要是描述INF文件可以识别的所有硬件设备，其中包含有设备的生产厂家，以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”，这个大家都不会陌生吧，是显卡的生产商。
3．SourceDisksNames节
该节主要指明安装文件所在的介质。如:“1="ATi Drivers Release CD"”表明所有驱动程序都在零售版的CD盘上。
4．SourceDiskFiles节
驱动程序文件列表及被安装的位置，该节必须结合[SourceDisksNames]节才能知道具体的位置。如“atinbtxx.sys=1”，则你必须到[SourceDisksNames]节去查看“1”具体代表那个位置。
5．DestinationDirs节
INF文件会指示安装程序在安装的过程中，将一些文件复制到硬盘上，或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。
6．Defaultinstall节和Install节
在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下，首先执行[DefaultInstall]节，该节指定了要复制或删除的文件，注册表的更新，INF文件的更新等等信息，同时又包含指向其他节的指针。
7．String节
这一节中定义了字符串变量，当某些字符串频繁地出现在INF文件中，为简化输入，可以在该节中定义一个字符串变量，代表该字符串出现在INF文件中。
8.MATLAB中的Inf
在MATLAB中Inf表示无穷大（MATLAB中的最小的数为eps）。  例如，在MATLAB的命令窗口中输入：
1/0
则运算结果为Inf。见右图：
INF返回正无穷大的IEEE算术表示。被零除溢出，从而导致结果作为传统的浮点值太大，而导致操作无限的结果
INF （ “double” ）是与INF没有输入结果相同。
INF （ “single” ）是表示单精度的INF 。
INF （N） N - n矩阵的INFS 。
INF （ M，N ）或INF （ [ M，N ] ）表示M * n的矩INFS阵。
INF （ M，N ，P ,...)或INF （ [ M，N ,...])是一个m * N - *- P -*通过... ...对INFS阵列。
注意尺寸输入M，N ，P， ...应非负整数。负整数被视为0 。
INF (...,类名）是一个类的类名指定的INFS阵列。类名必须是“single”或“double” 。
例子
1 / 0， 1.e1000 ， 2 ^ 2000，和exp（ 1000 ）都产生INF 。
log(0)也产生INF
应用实例
下面让我们以ATi显卡的用于Windows XP的WDM驱动程序为例来说明一下INF文件的具体含义，由于INF文件往往很长，为了说明方便，我们删除了一些大部分的信息，仅保留一个INF文件的结构示。
光说不练不行，下面让我们来看几个INF文件的典型应用。
1．打开“锁”定的注册表
第一步：打开记事本程序，输入以下内容：
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
[DeleteMe]
HKCU,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”
HKLM,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”
输入完毕，另存为UNLOCK.INF，名字任取，扩展名必须是INF
第二步：在“UNLOCK.INF”文件上右键单击，在弹出的右键菜单中点选“安装”，如图2所示,被锁的注册表即会应声而开。
2．巧妙利用INF文件自动备份重要的文件
大家都知道，注册表是Windows操作系统的命根子，因此，系统启动时会自动运行注册表检查程序，自动更新备份注册表文件。在系统盘的Windows目录中有一个“Scanreg.ini”，Scanregw.exe每天所执行的默认操作都是在它的控制下运行的，我们可以利用这一原理实现对我们重要文件的备份。
第一步：打开资源管理器，找到该文件，用记事本程序打开它。我们可以清楚地看到共有五个参数，如图所示。
（1）Backup 这个参数值可为0或1，默认为1。值为1表示在每天首次启动时扫描注册表，值为0表示不进行任何注册表操作。
（2）Optimize 这个参数值可为0或1，默认为1。值为1表示每次扫描注册表时删除注册表中的多余数据，从而优化注册表数据，值为0表示不进行删除操作。
（3）ScanregVersion=0.0001 程序版本说明。
（4）MaxBackupCopies 这个参数用来设置建立的备份文件的个数，值为5至99中的任一个数，默认值为5，即最大可建立五个备份文件，为更好的保护系统，一般来说设置10个左右为宜。
（5）BackupDirectory 这个参数用来设置备份文件存放的目录，默认存放目录为Windows\Sysbckup，注意这里填写的必须是完整路径。
（6）Files 在“Scanreg.ini”的最后有如下注释内容“；Files=[dir code,]file1,file2,file3”，将其前面的注释符号“；”去掉，你就可以自己DIY需要注册表检查程序备份的重要文件了。默认情况下，注册表检查程序创建注册表备份文件时，会将“system.dat”、“system.ini”、“user.dat”和“win.ini”四个文件保存在“cab”压缩文件中，如果你需要将其他重要的系统配置文件添加到此压缩文件中，可在“Files=”后面输入“[目录代码]，文件名1，文件名2，文件名3”，文件名之间以逗号相隔，目录代码含义如下：
10 代表C:\Windows目录
11 代表C:\Windows\System目录
30 代表C盘根目录
31 代表Windows系统所在盘的根目录
例如要把Autoexec.bat和Config.sys两个文件放到备份文件中，可设置参数为“File=30,config.sys,autoexec.bat”。
3．硬盘（U盘）也需个性化
第一：给硬盘（U盘）DIY一个可爱的图标
我们首先将硬盘的生硬图标替换为我们喜欢的图标，给硬盘披上美丽的彩衣。首先准备一图标文件，你可以用图标制作程序制作自己的图标文件，也可以使用现成的图标文件，最好是保存到硬盘某一个分区的根目录下。接着打开记事本程序，录入以下内容：
[autorun]
ICON=******.ICO
其中“******”是图标文件的路径及图标文件名，请自行修改为具体的图标文件的路径及图标文件名。录入完毕，另存为“Autorun.inf”,并将其剪切到某一个你欲扮酷的分区的根目录下。
第二：让硬盘能歌善舞
想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后，如图3所示，就自动打开音乐播放程序，开始播放音乐文件，让动听的音乐时刻环绕在你的左右。心动了吧，其实十分简单，Come On。
接着在“Autorun.inf”文件中录入以下内容:
OPEN=D:\Program Files\foobar2000\
foobar2000.exe d:\qs.fpl
其中“D:\Program Files\foobar2000\
foobar2000.exe”是笔者喜爱的播放器Foobar2000的具体位置，如果你用的是Winamp或其它的播放器，请替换为具体的播放器所在的位置，“d:\qs.fpl”是Foobar2000播放器的播放列表文件，你也可以替换为某一个具体的音乐文件所在的路径。如果你用的是Winamp则播放列表文件应是“*.m3u”。 利用此方法也可以设置当双击硬盘分区时自动播放影视文件。
4．无人值守安装Windows 98
在Windows 98安装光盘中有一个Batch工具，可以制作用于无人值守安装的脚本，即生成一个包含安装Windows 98时需要和安装向导进行交互的各种信息的INF文件——Msbatch.inf。
首先找到位于Windows 98安装光盘“/tools /reskit/batch”目录中的“setup”程序图标安装Batch98工具。
接着，运行Batch工具，按照向导提示生成“msbatch.inf”文件，并将该文件保存到软盘中。具体的生成方法请参考有关资料，这里不再赘述。
当需要重新安装Windows 98时，用启动盘进入到DOS提示符下，将保存有“msbatch.inf”文件的软盘插入软驱，将Windows 98安装光盘插入光驱，在DOS提示符后键入如下命令：“x:/win98/setup a:msbatch.inf”，回车后即可。其中“X”为光驱和盘符。
5．将屏保请进右键菜单
当我们有事暂时离开一会儿，利用设有密码的屏幕保护程序可以保护我们当前的操作不被他人偷看。但是，在默认的设置中，屏幕保护程序最快也要在1分钟以后才能够启动，那么怎样才能快速激活屏幕保护程序呢？
最常见的方法是在桌面上建立一个启动屏保的快捷方式，在需要时双击即可启动。另外，我们还可以将屏保请进右键菜单！
第一步：打开记事本程序，录入以下内容：
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSID\\shell\pingbao",,,"屏幕保护"
HKCR,"CLSID\\shell\pingbao\COMMAND",,,"ssstars.scr /S "%1""
录入完毕，经检查无误后，另存为“PingBao.inf”，文件名可任取，扩展名必须是INF。
第二步：在“PingBao.inf”文件上右键单击，在弹出的右键菜单中点选“安装”。
第三步：当需要运行屏幕保护的时候，回到桌面上，在“我的电脑”图标上点击右键选择“屏幕保护”选项。点击一下试试，是不是立即启动屏幕保护程序了。
注意：其中的“ssstars.scr”为欲启动的屏幕保护程序的文件名，请用你喜欢的屏幕保护程序文件来替换；如果你点选右键菜单中的“屏幕保护”选项后，没有反应即没有启动屏幕保护程序，请将文中的“/S "%1"”修改为“"%1" /S”即可。
（以上程序在复制过来的时候，有部分字符被系统自动省略了，所以直接复制这里的字段是不可用的，想看真实的原码请看参考资料网址的图文说明！还有这个右键是在我的电脑上右键而不是桌面！）
文件格式
INF 文件必须包含以下规则： 
1.节（ Sections ）开始于由中括号 ([]) 扩起来的节名 
2.必须包含版本信息节以表明自己属于 win95 还是 winnt4 格式。 
3.值 (Value) 由 %strkey% 替代的表达式字符串表达组成， strkey 必须在 strings 节中定义。如果出现 % ，则用 %% 替代。 
Setup 程序使用以下各节 :
[Version]
必须包含在 INF 文件中，表明 inf 文件格式 
[Version] 
Signature="signature-name" 
Class=class-name 
ClassGUID=GUID 
Provider=INF-creator 
LayoutFile=filename.inf[,filename.inf]... 
Signature-name 
参数可以取值 $Windows NT$, $Chicago$, or $Windows 95$ （引号括起来） . 如果不是以上这些字符串，则不被认可为 inf 文件。 
Class-name 
此参数用于安装设备驱动。详细信息见 DDK Programmer's Guide. 
GUID 
此参数用于安装设备驱动。详细信息见 DDK Programmer's Guide. 
INF-creator 
标示 INF 的创建者 . 典型的情况，此值为 inf 文件的创建者所在组织 
filename.inf 
INF 文件必须包含 SourceDisksFiles 和 SourceDisksNames 节。这些文件的描述文件通常命名为 LAYOUT.INF. 如果文件名不是特别指定， SourceDisksNames 和 SourceDisksFiles 必须出现在当前 inf 文件中 
以下为典型的例子： 
[Version] 
Signature="$Windows NT$" 
Class=Mouse 
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318} 
Provider=%Provider% 
LayoutFile=layout.inf 
[Strings] 
Provider="Corporation X" 
[install]
此节指定包含的安装指令节，每一个条目将会成为一节 
LogConfig=log-config-section-name[,log-config-section-name]... 
Copyfiles=file-list-section[,file-list-section]... 
Renfiles=file-list-section[,file-list-section]... 
Delfiles=file-list-section[,file-list-section]... 
UpdateInis=update-ini-section[,update-ini-section]... 
UpdateIniFields=update-inifields-section[,update-inifields-section]... 
AddReg=add-registry-section[,add-registry-section]... 
DelReg=del-registry-section[,del-registry-section]... 
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]... 
以上各条目并非全部必须。节名必须为可见字符。每个条目包含一到多个节。第一个命名之后的所有命名必须以","引导。条目指定了必须出现在 INF 文件中的各节。 CopyFiles 则可例外（如果没有任何文件被拷贝）。 
如果安装驱动程序，仅仅使用 LogConfig 条目。详见 DDK Programmer's Guide. 
CopyFiles 条目中可以包含特殊字符 @ 以直接拷贝一个单一文件。文件将拷贝到 DefaultDestDir, DestinationDirs 节包含了 DefaultDestDir 的描述。
例子： 
[MyInstall] 
CopyFiles= @MyFile.exe 
此文件将拷贝到缺省目标目录。 
为适应不同平台，可以在 install 节后加上不同的后缀。可以出现 defaultInstall.nt 这样的节名。 install-section-name 可选的后缀： 
Extension Platform 
.Win Windows 95 
.NT Windows NT (all platforms) 
.NTx86 Windows NT (x86 only) 
.NTMIPS Windows NT (MIPS only) 
.NTAlpha Windows NT (Alpha only) 
.NTPPC Windows NT (PowerPC only) 
以下例子展示了如何出现两个 copyfiles 节： 
[Ser_Inst] 
CopyFiles=Ser_CopyFiles, mouclass_CopyFiles 
[Ser_CopyFiles] 
sermouse.sys 
[mouclass_CopyFiles] 
mouclass.sys 
[Add Registry]
描述如何增加注册表项目。add -registry-section 节名必须处现在 install 节中的 AddReg 条目中。 
[add-registry-section] 
reg-root-string, [subkey], [value-name], [flags], [value] 
[reg-root-string, [subkey], [value-name], [flags], [value]] 
reg-root-string 注册表的根名： 
HKCR HKEY_CLASSES_ROOT. 
HKCU HKEY_CURRENT_USER. 
HKLM HKEY_LOCAL_MACHINE. 
HKU HKEY_USERS. 
HKR 相关于 SetupInstallFromInfSection. 节中指定的值 
subkey 
可选，例如 key1\key2\key3.... 
value-name 
可选，标示 subkey 的值名称。对于字符串类型可以空，标示缺省字符串值 
flag值类型的标示 
FLG_ADDREG_BINVALUETYPE The value is "raw" data. 
FLG_ADDREG_NOCLOBBER 如果注册表中出现不要覆盖此值 . 
FLG_ADDREG_DELVAL 从注册表中删除此键 
FLG_ADDREG_APPEND 追加一个值到已存值中，仅仅支持 REG_MULTI_SZ 值 
FLG_ADDREG_TYPE_MASK Mask. 
FLG_ADDREG_TYPE_SZ REG_SZ 类型 
FLG_ADDREG_TYPE_MULTI_SZ REG_MULTI_SZ. 
FLG_ADDREG_TYPE_EXPAND_SZ REG_EXPAND_SZ. 
FLG_ADDREG_TYPE_BINARY REG_BINARY. 
FLG_ADDREG_TYPE_DWORD REG_DWORD. 
FLG_ADDREG_TYPE_NONE REG_NONE. 
Windows 95 安装程序将视扩展数据类型为 REG_SZ or REG_BINARY. 
value 
可选 . 16 进值或者字符串
[CopyFiles]
[CopyFiles] 此类节可以有多个，定义于 install 节中。 
[file-list-section] 
destination-file-name[,source-file-name][,temporary-file-name][,flag] 
[destination-file-name[,source-file-name][,temporary-file-name]][,flag] 
. 
destination-file-name 
目标文件名，如果没有给出源文件名，那么此名也是源文件名 . 
source-file-name 
源文件名，如果没有给出目标文件名，那么此名也是目标文件名 . 
temporary-file-name 
被忽略， setup 函数自动处理临时文件 . 
flag 
可选，用于控制文件如何被拷贝。你必须配置实际值 
COPYFLG_WARN_IF_SKIP (0x00000001) 
如果用户试图在发生一个错误后跳过将显示警告信息 
COPYFLG_NOSKIP (0x00000002) 
不允许用户跳过拷贝此文件 
COPYFLG_NOVERSIONCHECK (0x00000004) 
如果文件存在于目标目录，忽略 
COPYFLG_FORCE_FILE_IN_USE (0x00000008) 
替换被使用得文件？，当拷贝时文件被使用 
COPYFLG_NO_OVERWRITE (0x00000010) 
不覆盖目标文件中已存文件 
COPYFLG_NO_VERSION_DIALOG (0x00000020) 
如果目标文件已存且新则不覆盖也不出现对话框 
COPYFLG_REPLACEONLY (0x00000040) 
替换目标文件 
[delete Registry] 描述如何增加注册表项目。
del -registry-section 节名必须处现在 install 节中的 DelReg 条目中。 
[del-registry-section] 
reg-root-string, [subkey], [value-name], [flags], [value] 
[reg-root-string, [subkey], [value-name], [flags], [value]] 
reg-root-string 注册表的根名： 
HKCR HKEY_CLASSES_ROOT. 
HKCU HKEY_CURRENT_USER. 
HKLM HKEY_LOCAL_MACHINE. 
HKU HKEY_USERS. 
HKR 相关于 SetupInstallFromInfSection. 节中指定的值 
subkey 
value-name 
可选，标示 subkey 的值名称。对于字符串类型可以空，标示缺省字符串值 
[Delete Files] 此节指定需要被删除的文件 , 节名必须出现在 install 中的 delfiles 条目中 
[file-list-section] 
file-name[,,,flag] 
flag 
可选。 
DELFLG_IN_USE (0x00000001) 
当因为文件正被使用， SetupCommitFileQueue 取消 , 将排队在系统重新启动时候被删除。 
如果不使用此值，则安装时候被使用的文件不会被 delete files 指定节删除 
DELFLG_IN_USE1 (0x00010000) 
高字节版本的 DELFLG_IN_USE. Setting DELFLG_IN_USE1 差别在于同样可适用于 Copyfiles 节和 delete Files 节即使 COPYFLG_WARN_IF_SKIP 标志被使用。 
此节指示那些 ini 文件中的条目将对应到注册表。 
ini-file, ini-section, ,reg-root-string,subkey[,flags] 
ini-file :ini 文件名 . 
ini-section : ini 文件的节 
ini-key : 条目 
flags : 指示当注册表存在对应的注册表项目是否是否覆盖旧值。 
Bit value 
0 0 缺省，不删除 ini 文件项目，当 ini 转移到注册表后 
0 1 删除 ini 文件中的项目，当 ini 转移到注册表后 
1 0 缺省，当注册表存在此子项，则不覆盖 
1 1 覆盖 
[Rename Files] 此类型节列出那些将要改名的文件。此节名必须出现在 install 节中 
[rename-files-section-name] 
new-file-name,old-file-name 
new-file-name ： 新文件名 
old-file-name ：原来的文件名。此参数必须定义于 SourceDisksFiles 节中。 
此节替换、增加、删除指定 ini 文件的条目。此节名必须存在于 install 节中。 
ini-file,ini-section,profile-name,[old-field],[new-field],[flags] 
参数说明见上 
[update-ini-section-name] 
此节删除、替换或者新增 INI 的项目 . 节名必须处现在 install 节中的 UpdateInis 条目中 
[update-ini-section-name] 
ini-file,ini-section,[old-ini-entry],[new-ini-entry],[flags] 
ini-file 
包含将要改变的条目的 ini 文件。 
ini-section 节名 
old-ini-entry 可选的，通常为 key=value 形式 
new-ini-entry 可选。通常来自 key=value. key 或者 value 可以为可替换的字符串。 
flags 可选命令标志 . 
Value Meaning 
0 缺省。如果 old-ini-entry key 出现在 INI file 条目中 , 将被 new-ini-entry 替换。 值会被忽略，只要 key 匹配即可。为无条件增加新条目到 ini 文件，可设置 old-ini-entry 为 NULL 。 为无条件从 ini 文件中删除 old-ini-entry from ，设置 new-ini-entry 为 NULL 。 
1 如果 old-ini-entry 的 key 和 value 已经存在于 INI 文件 , 将被 new-ini-entry 替换。 old-ini-entry 参数的 key 和 value 都必须匹配 
2 如果 old-ini-entry 参数没有出现在 INI 文件中 , 将不进行任何替换 
若 old-ini-entry 的 key 存在于 INI 文件且 new-ini-entry 的 key 存在于 INI 文件 , INI 文件中匹配的 new-ini-entry 的 key 参数被删除 , old-ini-entry 的 key 匹配参数被替换 
3 类似 2 ，但是，例外情况为： old-ini-entry 参数匹配基于 key 和 value, 并不限于 key 
可以使用通配符 (*) 指代 key 和 value 的一部分和全部 
ini 文件名可以为字符串或者字符键。即 %strkey% ，此 strkey 定义于 [Strings] 节，且必须是一个合法文件名。 
Ini 文件明应当包含目录，可以是直接目录，也可以是特定目录标示符。 
可以拥有 %dirid% 指定目录， dirid 指定于 SetupSetDirectoryId 节中 . 当时用目录标示符，你应当使用反斜线号于一个目录路径中。举例： , 你可以使用 %11%\card.ini 表示 CARD.INI 存在于 System32 目录中。 
以下为例子： 
%11%\sample.ini, Section1,, Value1=2 ; 新增一个条目 
%11%\sample.ini, Section2, Value3=*, ; 删除老条目 
%11%\sample.ini, Section4, Value5=1, Value5=4 ; 替换老条目
[Services]
[Services] 条目 此节条目列出增加和删除的服务列表。 
　AddService=ServiceName,flag,service-install-section[,event-log-install-section] 
DelService=ServiceName 
ServiceName 将要安装 / 删除的服务名 
flag 　指定将如何增加服务。
此参数仅用于 AddService 键，取值为： 
SPSVCINST_TAGTOFRONT (0x1) 将服务标签题见到服务所在组的前列 
SPSVCINST_ASSOCSERVICE (0x2) 　 此增加的服务关联的服务 
service-install-section 　 服务安装节 
event-log-install-section 时间记录安装节。 
以下为例子： 
[Ser_Inst.Services] 
AddService = sermouse, 0x00000002, sermouse_Service_Inst, sermouse_EventLog_Inst ; Port Driver 
AddService = mouclass,, mouclass_Service_Inst, mouclass_EventLog_Inst 
; Class Driver 
service-install-section
service-install-section此节列出将要安装的每一个服务信息 
　DisplayName=[name] 
ServiceType=type-code 
StartType=start-code 
ErrorControl=error-control-level 
ServiceBinary=path-to-service 
LoadOrderGroup=[load-order-group-name] 
Dependencies=+depend-on-group-name[[,depend-on-service-name]...] 
StartName=[driver-object-name] 
name 可选，友好的服务名称 
type-code 驱动类型。为任何被 theCreateService 函数认可的参数。 
start-code 何时启动驱动程序。可为： 
SERVICE_BOOT_START (0x0) 由操作系统 loader 启动。使用此值仅用于操作系统基本服务。 
SERVICE_SYSTEM_START (0x1) 操作系统初始化式启动。 
SERVICE_AUTO_START (0x2) SCM 在系统启动期间启动 
SERVICE_DEMAND_START (0x3) 　SCM 根据需要启动 
SERVICE_DISABLED (0x4) 　此服务不可被启动 
error-control-level 指定错误控制级别。 
CRITICAL (0x3) 
如果驱动装载失败，启动失败。如果启动不是在 “最后一次正确（ LastKnownGood. ）”控制集，切换到 LastKnownGood 。如果启动试图用于 LastKnownGood, 运行故障检查例程 
SEVERE (0x2) 如果启动不是用于 LastKnownGood , 切换到 LastKnownGood 。如果启动试图 LastKnownGood, 发生错误时继续启动。
NORMAL (0x1) 　若初始化时失败，启动将继续，但显示警告信息 
IGNORE (0x0) 　若初始化时失败，启动将继续，无警告信息 
path 　二进制文件路径
load-order-group-name 
可选 . 指示服务处在的服务组中的次序 : pointer, port, primary disk, and so forth. 
+depend-on-group-name 
可选，服务依赖的服务组，服务仅当该组的最后一个服务都启动后才启动 
depend-on-service-name 
可选。依赖的服务。 
driver-object-name 
可选。如果类型属于 Kernel driver 或者 file system driver, ，此名用于 I/O 管理器装载的名称 
例子： 
[mouclass_Service_Inst] 
DisplayName = %mouclass.SvcDesc% 
ServiceType = 1 ; SERVICE_KERNEL_DRIVER 
StartType = 1 ; SERVICE_SYSTEM_START 
ErrorControl = 1 ; SERVICE_ERROR_NORMAL 
ServiceBinary = %12%\mouclass.sys 
LoadOrderGroup = Pointer Class 
[DestinationDirs] 此节用于指定（ copy file ,rename file 等节中的目标目录） 
[DestinationDirs] 
file-list-section=drid[,subdir] 
. . 
[DefaultDestDir=drid[,subdir]] 
file-list-section 
Copy Files, Rename Files, 或者 Delete Files 节名 . drid 
目录标示 (DRID) 。 安装程序在安装期间替换一个 DIRID 采用实际的目录 
DIRID %dirid% 为预先定义的目录 
DIRID 可为以下值： 
-01,0xffff 目录 
01 SourceDrive:\path. 
10 Windows directory. 
11 System directory. (%windir%\system on Windows 95, %windir%\system32 on Windows NT) 
12 Drivers directory.(%windir%\system32\drivers on Windows NT) 
17 INF 文件目录
18 help 目录 
20 Fonts directory. 
21 察看器目录 
24 应用程序目录 
25 共享目录 Shared directory. 
30 启动驱动器的根目录 Root directory of the boot drive. 
50 %windir%\system 
51 假脱机目录 Spool directory. 
52 Spool drivers directory. 
53 用户 Profile 目录 
54 ntldr or OSLOADER.EXE 所在目录 
subdir 
子目录名 
可选项 DefaultDestDir 提供缺省的目标目录。如果 DefaultDestDir 未用于 DestinationDirs 节，缺省的目录设为 drid_system. 
[SourceDisksFiles] 此节指定源安装盘上的文件 
为了允许多操作系统分发源文件，你可构造针对特定平台的 SourceDisksFiles 节举例来讲， 在 MIPS 平台上，所有安装功能在用到 SourceDisksFiles 节将首先查找 SourceDisksFiles.Mips 节。 如果安装功能未找到 SourceDisksFiles.Mips 节 , 或者某个特定行未能在那里找到，安装功能将使用 SourceDisksFiles 节。此行为直接或间接影响安装功能处理 SourceDisksFiles 节作为其进程的一部分。 
大小写不敏感的前缀可为： 
alpha 
mips 
ppc 
x86 
[SourceDisksFiles] 
filename=disk-number[,subdir][,size] 
filename 
在源此盘上的文件名 
disk-number 
第几号源盘包含此文件。大于等于 1 ，且定义于 SourceDisksNames 节 
subdir 
可选参数。在源盘上的子目录，缺省为源盘的跟目录 
size 
可选参数，文件的压缩尺寸 
[SourceDisksFiles] 
SRS01.x86 = 1 ；源文件 SRS01.x86 存在于安装盘一号盘的根目录 
[SourceDisksNames] 指示源文件的磁盘名称 
为了允许多操作系统分发源文件，你可构造针对特定平台的 SourceDisksNames 节举例来讲， 在 MIPS 平台上，所有安装功能在用到 SourceDisksNames 节将首先查找 SourceDisksNames.Mips 节。 如果安装功能未找到 SourceDisksNames.Mips 节 , 或者某个特定行未能在那里找到，安装功能将使用 SourceDisksNames 节。此行为直接或间接影响安装功能处理 SourceDisksNames 节作为其进程的一部分。 
大小写不敏感的前缀可为： 
alpha 
mips 
ppc 
x86 
[SourceDisksNames[.platform]] 
disk-ordinal="disk-description"[,[disk-label], 
. 
platform 
指示源文件应用的平台指示符。 
disk-ordinal 
磁盘序号 
disk-description 
“”包含的字符串，用于标示磁盘。 
disk-label 
磁盘卷标 
unused 
保留未用 
path 
可选参数，源文件的绝对路径，如果未用，则表示示根目录 
如下例子中， write.exe 所有平台都一样，且存在于源盘 1 的 \common 目录。圆盘 1 将所有平台都一致的文件存在于 \common 目录中。 CMD.EXE 文件特定于平台，磁盘 2 指示安装功能针对每一个平台的特定目录。 HALNECMP.DLL 文件特定于 MIPS 平台。 
[SourceDisksNames] 
1 = "Windows NT CD-ROM", Instd1,, \common 
[SourceDisksNames.Alpha] 
2 = "Windows NT CD-ROM", Instd1,, \alpha 
[SourceDisksNames.Mips] 
2 = "Windows NT CD-ROM", Instd1,, \mips 
[SourceDisksNames.x86] 
2 = "Windows NT CD-ROM", Instd1,, \x86 
[SourceDisksNames.ppc] 
2 = "Windows NT CD-ROM", Instd1,, \ppc 
[SourceDisksFiles] 
write.exe = 1 
cmd.exe = 2 
[SourceDisksFiles.Mips] 
halnecmp.dll = 2 
[EventLog Install] 该节往注册表中加入事件消息文件，也可利用此节移除事件消息文件。 
AddReg=add-registry-section 
DelReg=del-registry-section 
add-registry-section 
del-registry-section 
事件消息节名 
AddReg 指示哪节将作为增加事件的注册表项 
DelReg 指示删除事件项 
以下为典型的 EventLog 安装节： 
[sermouse_EventLog_Inst] 
AddReg=sermouse_EventLog_AddReg 
[sermouse_EventLog_AddReg] 
HKR,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll\;%%SystemRoot%%\System32\drivers\sermouse.sys" 
HKR,,TypesSupported,0x00010001,7 
[Strings] 该节定义了 1 个或多个字符串关键字 . 一个字符串 key 展开一个可打印字符串 
可以有针对特定语言的 String 节 
[Strings[.langid]] 
strings-key=value 
langid 
可选的指示 string 节所属语言的语言标示符 . 举例 , U.S. English 是 0409 以及 Standard French 是 040c. 
strings-key 
由字符和数字组成的唯一名符 
value 
展开后的字符串内容 
例子： 
[Strings] 
String0="Corporation X" 
String1="Corporation X" 
String2="CS2590 SCSI Adapter" 
特定语言的例子： 
[Strings.0409] 
; American English strings 
S1 = "Hello" 
[Strings.0009] 
; British English strings 
; Note that 0009 is used instead of 0809 to make this the default 
; for English languages other than U.S. English. 
S1 = "Greetings" 
[Strings] 
; French strings 
; Not specifying a langid makes this the default 
S1 = "Bonjour" 
注释 
尽管此节通常处于 inf 文件的最后一节，但是定义的字符串 Key 可用于 inf 文件任何位置。安装程序将展开字符串 
如果用到 %, 请使用 %% 。 
Windows 95: 不可包含 strings 节，不支持多语言
病毒文件
[AutoRun]
//表示AutoRun部分开始
Icon=X:\“图标”.ico
//给X盘一个图标
Open=X:\“程序”.exe或者“命令行”
//双击X盘执行的程序或命令
shell\“关键字”=“鼠标右键菜单中加入显示的内容”
//右键菜单新增选项
shell\“关键字”\command=“要执行的文件或命令行”
//选中右键菜单新增选项执行的程序或者命令
[1]