简介
一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样,我们就是Windows系统,说明书就是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文件的结构。
1.Version节
每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature="$CHICAGOquot;”这样的条目则表示该INF文件适用于Windows98之后的所有操作系统,如果包含“signature="$WindowsNTquot;”这样的条目则表示该INF文件适用于Windows2000/XP/2003操作系统,而且两者必具其一。
另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备,如声卡)、Net(网络设备,通常是网卡)、Modem(调制解调器)、Printer(打印设备)、Image(图像捕获设备,如摄像头)。
2.Manufacturer节
该节中的条目主要是描述INF文件可以识别的所有硬件设备,其中包含有设备的生产厂家,以便设备的正确安装。如“%ATi%=ATi”指明设备的生产商为“ATi”,这个大家都不会陌生吧,是显卡的生产商。
3.SourceDisksNames节
该节主要指明安装文件所在的介质。如:“1="ATiDriversReleaseCD"”表明所有驱动程序都在零售版的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阵。
例子1/0,1.e1000,2^2000,和exp(1000)都产生INF。
log(0)也产生INF
应用实例
下面让我们以ATi显卡的用于WindowsXP的WDM驱动程序为例来说明一下INF文件的具体含义,由于INF文件往往很长,为了说明方便,我们删除了一些大部分的信息,仅保留一个INF文件的结构示。
光说不练不行,下面让我们来看几个INF文件的典型应用。
1.打开“锁”定的注册表
第一步:打开记事本程序,输入以下内容:
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
输入完毕,另存为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这个参数用来设置备份文件存放的目录,默认存放目录为WindowsSysbckup,注意这里填写的必须是完整路径。
(6)Files在“Scanreg.ini”的最后有如下注释内容“;Files=[dircode,]file1,file2,file3”,默认情况下,注册表检查程序创建注册表备份文件时,会将“system.dat”、“system.ini”、“user.dat”和“win.ini”四个文件保存在“cab”压缩文件中,如果你需要将其他重要的系统配置文件添加到此压缩文件中,可在“Files=”后面输入“[目录代码],文件名1,文件名2,文件名3”,文件名之间以逗号相隔,目录代码含义如下:
10代表C:Windows目录
11代表C:WindowsSystem目录
30代表C盘根目录
31代表Windows系统所在盘的根目录
例如要把Autoexec.bat和Config.sys两个文件放到备份文件中,可设置参数为“File=30,config.sys,autoexec.bat”。
3.硬盘(U盘)也需个性化
第一:给硬盘(U盘)DIY一个可爱的图标
我们首先将硬盘的生硬图标替换为我们喜欢的图标,给硬盘披上美丽的彩衣。首先准备一图标文件,你可以用图标制作程序制作自己的图标文件,也可以使用现成的图标文件,最好是保存到硬盘某一个分区的根目录下。接着打开记事本程序,录入以下内容:
[autorun]
ICON=******.ICO
其中“******”是图标文件的路径及图标文件名,请自行修改为具体的图标文件的路径及图标文件名。录入完毕,另存为“Autorun.inf”,并将其剪切到某一个你欲扮酷的分区的根目录下。
第二:让硬盘能歌善舞
想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后,如图3所示,就自动打开音乐播放程序,开始播放音乐文件,让动听的音乐时刻环绕在你的左右。心动了吧,其实十分简单,ComeOn。
接着在“Autorun.inf”文件中录入以下内容:
OPEN=D:ProgramFilesfoobar2000
foobar2000.exed:qs.fpl
其中“D:ProgramFilesfoobar2000
foobar2000.exe”是笔者喜爱的播放器Foobar2000的具体位置,如果你用的是Winamp或其它的播放器,请替换为具体的播放器所在的位置,“d:qs.fpl”是Foobar2000播放器的播放列表文件,你也可以替换为某一个具体的音乐文件所在的路径。如果你用的是Winamp则播放列表文件应是“*.m3u”。利用此方法也可以设置当双击硬盘分区时自动播放影视文件。
4.无人值守安装Windows98
在Windows98安装光盘中有一个Batch工具,可以制作用于无人值守安装的脚本,即生成一个包含安装Windows98时需要和安装向导进行交互的各种信息的INF文件——Msbatch.inf。
首先找到位于Windows98安装光盘“/tools/reskIT/batch”目录中的“setup”程序图标安装Batch98工具。
接着,运行Batch工具,按照向导提示生成“msbatch.inf”文件,并将该文件保存到软盘中。具体的生成方法请参考有关资料,这里不再赘述。
当需要重新安装Windows98时,用启动盘进入到DOS提示符下,将保存有“msbatch.inf”文件的软盘插入软驱,将Windows98安装光盘插入光驱,在DOS提示符后键入如下命令:“x:/win98/setupa:msbatch.inf”,回车后即可。其中“X”为光驱和盘符。
5.将屏保请进右键菜单
当我们有事暂时离开一会儿,利用设有密码的屏幕保护程序可以保护我们当前的操作不被他人偷看。但是,在默认的设置中,屏幕保护程序最快也要在1分钟以后才能够启动,那么怎样才能快速激活屏幕保护程序呢?
最常见的方法是在桌面上建立一个启动屏保的快捷方式,在需要时双击即可启动。另外,我们还可以将屏保请进右键菜单!
第一步:打开记事本程序,录入以下内容:
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSIDshellpingbao",,,"屏幕保护"
HKCR,"CLSIDshellpingbaoCOMMAND",,,"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
Signature-name
参数可以取值$WindowsNT$,$Chicago$,or$Windows95$(引号括起来).如果不是以上这些字符串,则不被认可为inf文件。
Class-name
此参数用于安装设备驱动。详细信息见DDKProgrammer'sGuide.
GUID
此参数用于安装设备驱动。详细信息见DDKProgrammer'sGuide.
INF-creator
标示INF的创建者.典型的情况,此值为inf文件的创建者所在组织
filename.inf
INF文件必须包含SourceDisksFiles和SourceDisksNames节。这些文件的描述文件通常命名为LAYOUT.INF.如果文件名不是特别指定,SourceDisksNames和SourceDisksFiles必须出现在当前inf文件中
以下为典型的例子:
[Version]
Signature="$WindowsNTquot;
Class=Mouse
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}
ProVIder=%Provider%
LayoutFile=layout.inf
[Strings]
Provider="CorporationX"
[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条目。详见DDKProgrammer'sGuide.
CopyFiles条目中可以包含特殊字符@以直接拷贝一个单一文件。文件将拷贝到DefaultDestDir,DestinationDirs节包含了DefaultDestDir的描述。
例子:
[MyInstall]
CopyFiles=@MyFile.exe
此文件将拷贝到缺省目标目录。
为适应不同平台,可以在install节后加上不同的后缀。可以出现defaultInstall.nt这样的节名。install-section-name可选的后缀:
ExtensionPlatform
.WinWindows95
.NTWindowsNT(allplatforms)
.NTx86WindowsNT(x86only)
.NTMIPSWindowsNT(MIPSonly)
.NTAlphaWindowsNT(Alphaonly)
.NTPPCWindowsNT(PowerPConly)
以下例子展示了如何出现两个copyfiles节:
[Ser_Inst]
CopyFiles=Ser_CopyFiles,mouclass_CopyFiles
[Ser_CopyFiles]
sermouse.sys
[mouclass_CopyFiles]
mouclass.sys
[AddRegistry]
描述如何增加注册表项目。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注册表的根名:
HKCRHKEY_CLASSES_ROOT.
HKCUHKEY_CURRENT_USER.
HKLMHKEY_LOCAL_MACHINE.
HKUHKEY_USERS.
HKR相关于SetupInstallFromInfSection.节中指定的值
subkey
可选,例如key1key2key3....
value-name
可选,标示subkey的值名称。对于字符串类型可以空,标示缺省字符串值
flag值类型的标示
FLG_ADDREG_BINVALUETYPEThevalueis"raw"data.
FLG_ADDREG_NOCLOBBER如果注册表中出现不要复盖此值.
FLG_ADDREG_DELVAL从注册表中删除此键
FLG_ADDREG_APPEND追加一个值到已存值中,仅仅支持REG_MULTI_SZ值
FLG_ADDREG_TYPE_MASKMask.
FLG_ADDREG_TYPE_SZREG_SZ类型
FLG_ADDREG_TYPE_MULTI_SZREG_MULTI_SZ.
FLG_ADDREG_TYPE_EXPAND_SZREG_EXPAND_SZ.
FLG_ADDREG_TYPE_BINARYREG_BINARY.
FLG_ADDREG_TYPE_DWORDREG_DWORD.
FLG_ADDREG_TYPE_NONEREG_NONE.
Windows95安装程序将视扩展数据类型为REG_SZorREG_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)
替换目标文件
[deleteRegistry]描述如何增加注册表项目。
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注册表的根名:
HKCRHKEY_CLASSES_ROOT.
HKCUHKEY_CURRENT_USER.
HKLMHKEY_LOCAL_MACHINE.
HKUHKEY_USERS.
HKR相关于SetupInstallFromInfSection.节中指定的值
subkey
value-name
可选,标示subkey的值名称。对于字符串类型可以空,标示缺省字符串值
[DeleteFiles]此节指定需要被删除的文件,节名必须出现在install中的delfiles条目中
[file-list-section]
file-name[,,,flag]
flag
可选。
DELFLG_IN_USE(0x00000001)
当因为文件正被使用,SetupCommitFileQueue取消,将排队在系统重新启动时候被删除。
如果不使用此值,则安装时候被使用的文件不会被deletefiles指定节删除
DELFLG_IN_USE1(0x00010000)
高字节版本的DELFLG_IN_USE.SettingDELFLG_IN_USE1差别在于同样可适用于Copyfiles节和deleteFiles节即使COPYFLG_WARN_IF_SKIP标志被使用。
此节指示那些ini文件中的条目将对应到注册表。
ini-file,ini-section,,reg-root-string,subkey[,flags]
ini-file:ini文件名.
ini-section:ini文件的节
ini-key:条目
flags:指示当注册表存在对应的注册表项目是否是否复盖旧值。
Bitvalue
00缺省,不删除ini文件项目,当ini转移到注册表后
01删除ini文件中的项目,当ini转移到注册表后
10缺省,当注册表存在此子项,则不复盖
11复盖
[RenameFiles]此类型节列出那些将要改名的文件。此节名必须出现在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可选命令标志.
ValueMeaning
0缺省。如果old-ini-entrykey出现在INIfile条目中,将被new-ini-entry替换。值会被忽略,只要key匹配即可。为无条件增加新条目到ini文件,可设置old-ini-entry为NULL。为无条件从ini文件中删除old-ini-entryfrom,设置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;PortDriver
AddService=mouclass,,mouclass_Service_Inst,mouclass_EventLog_Inst
;ClassDriver
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,primarydisk,andsoforth.
+depend-on-group-name
可选,服务依赖的服务组,服务仅当该组的最后一个服务都启动后才启动
depend-on-service-name
可选。依赖的服务。
driver-object-name
可选。如果类型属于Kerneldriver或者filesystemdriver,,此名用于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=PointerClass
[DestinationDirs]此节用于指定(copyfile,renamefile等节中的目标目录)
[DestinationDirs]
file-list-section=drid[,subdir]
..
[DefaultDestDir=drid[,subdir]]
file-list-section
CopyFiles,RenameFiles,或者DeleteFiles节名.drid
目录标示(DRID)。安装程序在安装期间替换一个DIRID采用实际的目录
DIRID%dirid%为预先定义的目录
DIRID可为以下值:
-01,0xffff目录
01SourceDrive:path.
10Windowsdirectory.
11Systemdirectory.(%windir%systemonWindows95,%windir%system32onWindowsNT)
12Driversdirectory.(%windir%system32driversonWindowsNT)
17INF文件目录
18help目录
20Fontsdirectory.
21察看器目录
24应用程序目录
25共享目录Shareddirectory.
30启动驱动器的根目录Rootdirectoryofthebootdrive.
50%windir%system
51假脱机目录Spooldirectory.
52Spooldriversdirectory.
53用户Profile目录
54ntldrorOSLOADER.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="WindowsNTCD-ROM",Instd1,,common
[SourceDisksNames.Alpha]
2="WindowsNTCD-ROM",Instd1,,alpha
[SourceDisksNames.Mips]
2="WindowsNTCD-ROM",Instd1,,mips
[SourceDisksNames.x86]
2="WindowsNTCD-ROM",Instd1,,x86
[SourceDisksNames.ppc]
2="WindowsNTCD-ROM",Instd1,,ppc
[SourceDisksFiles]
write.exe=1
cmd.exe=2
[SourceDisksFiles.Mips]
halnecmp.dll=2
[EventLogInstall]该节往注册表中加入事件消息文件,也可利用此节移除事件消息文件。
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%%System32IoLogMsg.dll;%%SystemRoot%%System32driverssermouse.sys"
HKR,,TypesSupported,0x00010001,7
[Strings]该节定义了1个或多个字符串关键字.一个字符串key展开一个可打印字符串
可以有针对特定语言的String节
[Strings[.langid]]
strings-key=value
langid
可选的指示string节所属语言的语言标示符.举例,U.S.English是0409以及StandardFrench是040c.
strings-key
由字符和数字组成的唯一名符
value
展开后的字符串内容
例子:
[Strings]
String0="CorporationX"
String1="CorporationX"
String2="CS2590SCSIAdapter"
特定语言的例子:
[Strings.0409]
;AmericanEnglishstrings
S1="Hello"
[Strings.0009]
;BritishEnglishstrings
;Notethat0009isusedinsteadof0809tomakethisthedefault
;forEnglishlanguagesotherthanU.S.English.
S1="Greetings"
[Strings]
;Frenchstrings
;Notspecifyingalangidmakesthisthedefault
S1="Bonjour"
注释
尽管此节通常处于inf文件的最后一节,但是定义的字符串Key可用于inf文件任何位置。安装程序将展开字符串
如果用到%,请使用%%。
Windows95:不可包含strings节,不支持多语言