您的位置:首页 > 其它

INF文件格式

2010-03-18 12:58 218 查看
大家都知道,在“我的电脑”里有数也数不清的INF文件,但是却很少有人知道,INF文件是干什么用的。充其量,也仅仅停留在INF文件能够解开锁定的注册表这一感性的认识上,那么到底什么是INF文件,INF文件又能干些什么呢?今天让我们一起走进INF文件这一神秘的世界。

  揭开INF文件的神秘面纱

  INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候,INF文件将会自动调用。而在其他场合下,则需要在INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。  

  在C:/Windows/INF文件夹中存放有大量的INF文件。该文件夹一般处在隐含状态,如果你想查看该文件夹,可选择“查看→文件夹选项→查看”,然后在“文件和文件夹”选项下选择“显示所有文件”。

  解剖INF文件的结构

  INF文件其实是一种纯文本文件,可以用任意一款文本编辑软件来打开进行编辑,如:记事本、写字板等。INF文件有一整套的编写规则,每一个INF文件都是严格按照这些规则来编写的。

  *规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。

  *规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。

  *规则三: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”,则你必须到[DestinationDirs]节去查看“1”具体代表那个位置。

  5.DestinationDirs节

  INF文件会指示安装程序在安装的过程中,将一些文件复制到硬盘上,或者将硬盘上的一些文件删除、重命名等。该节即指定了为实现上述目的的文件所在的目的路径。

  6.DefaultInstall节和Install节

  在这一节中描述了设备驱动程序与硬件设备的实际属性。默认情况下,首先执行[DefaultInstall]节,该节指定了要复制或删除的文件,注册表的更新,INF文件的更新等等信息,同时又包含指向其他节的指针。

  7.String节

  这一节中定义了字符串变量,当某些字符串频繁地出现在INF文件中,为简化输入,可以在该节中定义一个字符串变量,代表该字符串出现在INF文件中。

读懂INF文件

  下面让我们以ATi显卡的用于Windows XP的WDM驱动程序为例来说明一下INF文件的具体含义,由于INF文件往往很长,为了说明方便,我们删除了一些大部分的信息,仅保留一个INF文件的结构,如图1所示。

  


  

  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.巧妙利用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”,并将其剪切到某一个你欲扮酷的分区的根目录下。

  第二:让硬盘能歌善舞

  想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后,就自动打开音乐播放程序,开始播放音乐文件,让动听的音乐时刻环绕在你的左右。心动了吧,其实十分简单,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/{ 20D04FE0-3AEA-1069-A2D8-08002B30309D }/shell/pingbao",,,"屏幕保护"

  HKCR,"CLSID/{ 20D04FE0-3AEA-1069-A2D8-08002B30309D }/shell/pingbao/COMMAND",,,"ssstars.scr /S "%1""

  录入完毕,经检查无误后,另存为“PingBao.inf”,文件名可任取,扩展名必须是INF。

  第二步:在“PingBao.inf”文件上右键单击,在弹出的右键菜单中点选“安装”。

  第三步:当需要运行屏幕保护的时候,回到桌面上,在“我的电脑”图标上点击右键选择“屏幕保护”选项,如图2所示。点击一下试试,是不是立即启动屏幕保护程序了。  

  


    注意:其中的“ssstars.scr”为欲启动的屏幕保护程序的文件名,请用你喜欢的屏幕保护程序文件来替换;如果你点选右键菜单中的“屏幕保护”选项后,没有反应即没有启动屏幕保护程序,请将文中的“/S "%1"”修改为“"%1" /S”即可。
6.将磁盘管理程序请进右键菜单

  对磁盘进行定期的整理是我们经常要做的一项工作,每次都是按部就班地点击“开始→程序→附件→系统工具→磁盘碎片整理程序”,然后在弹出的选择驱动器窗口中选择要整理的分区,再点击“碎片整理”按钮开始整理。这样比较麻烦,我们可以试一试将磁盘管理程序添加到右键菜单。

  第一步:打开记事本程序,输入以下内容:

  [version]

  signature=”$chicago$”

  [defaultinstall]

  AddReg=addMe

  [AddMe]

  HKCR,"/Drive/shell/磁盘整理/command",,,"defrag.exe %1"

  输入完毕,另存为AddDefrag.INF,名字任取,扩展名必须是INF。

  第二步:在“AddDefrag.INF”文件上右键单击,在弹出的右键菜单中点选“安装”。

  第三步:以后要进行磁盘整理,只需打开资源管理器,在相应的盘符上点右键,在弹出的右键菜单中选择“磁盘整理”即可。

7.解决ATi显卡无法安装公版驱动的问题

  有些第三方的ATi显卡无法安装公版的驱动程序,造成该问题的原因是多方面的,如有些第三方厂商在硬件上做了改动,采用了非公版的PCB设计和BIOS等,这都可能会导致无法安装公版驱动程序的情况发生。当你的显卡遇到这个问题该怎么办呢?

  首先将你下载的ATi显卡驱动程序解压缩到硬盘任一目录下,在“ATiDrive”子目录中找到会列出所有的inf文件,ATiixpxx.inf——适用于Windows XP,ATii9xxx.inf——适用于Windows 9x ,ATii2kxx.inf适用于Windows 2000 。

  接着打开操作系统对应的INF文件,通过菜单栏的编辑——查找功能,查找“ati.mfg”字符串,随后会看到“RADEON 7000、RADEON 7200、RADEON 7500、RADEON 8500”等条目信息,将其删除。

  接着查找与你的显卡匹配的字符串,如笔者的RADEON 7500显卡,就查找“RADEON 7500”,找到如下信息:“RADEON 7500=ati2mtag_RV200,PCI/VEN_1002&&&&DEV_5157&&&&SUBSYS_013A1002”,将“&&&&SUBSYS_013A1002”删除,保存文件。

  现在再试试,看问题是不是解决了。

  8.在命令行下安装INF文件

  通常情况下,我们都是在Windows环境下安装INF文件的,但是假如有一天,你需要在命令行运行INF文件该怎么办呢?

  在命令行提示符后输入“ rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 INF文件所在的路径及文件名.inf ”,回车后即可安装相应的INF文件。

=================================================================

上面讲得很白话,又找了点稍微专业点的

INF文件必须包含以下规则:

节(Sections)开始于由中括号([])扩起来的节名

必须包含版本信息节以表明自己属于win95还是winnt4格式。

值(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] 此节指定包含的安装指令节,每一个条目将会成为一节

[install-section-name]

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 值类型的标示

Value Meaning

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] 此类节可以有多个,定义于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 File to Registry] 此节指示那些ini文件中的条目将对应到注册表。

[ini-to-registry-section]

ini-file, ini-section, [ini-key],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 节中。

[Update INI Fields] 此节替换、增加、删除指定ini文件的条目。此节名必须存在于install节中。

[update-inifields-section-name]

ini-file,ini-section,profile-name,[old-field],[new-field],[flags]

参数说明见上

[Update INI File] 此节删除、替换或者新增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]条目 此节条目列出增加和删除的服务列表。

[install-section-name.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] 此节列出将要安装的每一个服务信息

[install-section-name_ServiceInstallSection]

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],[unused,path]

.

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] 该节往注册表中加入事件消息文件,也可利用此节移除事件消息文件。

[install-section-name_EventLogInstallSection]

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节,不支持多语言.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: