2024年1月31日发(作者:)

般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样,我们就是Windows系统,说明书就是INF文件。INF文件功能非常强大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底下的超强批处理。要熟练掌握和理解甚至是编写INF文件需要对其内部结构有相当的认识。INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册表中加入自身相关信息等等。 安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的功劳才使得Windows可以找到这些硬件设备的驱动并正确安装。当我们通过“开始→控制面板→添加删除程序→Windows安装程序”来添加系统组件的时候,INF文件将会自动调用。而在其他场合下,则需要在INF文件上点击鼠标右键,然后选择“安装”,你才能顺利安装应用程序。

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

[编辑本段]

数学符号

inf,表示下确界。

对于函数y=f(x),在使f(x)大于等于M成立的所有常数M中,我们把M的最大值M’叫做函数y=f(x)的下确界。

下确界:在所有那些下界中如果有一个最大的下界,就称为M的下确界

[编辑本段]

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]节才能知道具体的位置。如“=1”,则你必须到[DestinationDirs]节去查看“1”具体代表那个位置。

5.DestinationDirs节

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

6.Defaultinstall节和Install节

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

7.String节

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

[编辑本段]

INF应用实例

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

光说不练不行,下面让我们来看几个INF文件的典型应用。

1.打开“锁”定的注册表

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

[version]

signature=”$chicago$”

[defaultinstall]

delReg=DeleteMe

[DeleteMe]

HKCU,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“DisableregstryTools”

HKLM,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“DisableregstryTools”

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

第二步:在“”文件上右键单击,在弹出的右键菜单中点选“安装”,如图2所示,被锁的注册表即会应声而开。

2.巧妙利用INF文件自动备份重要的文件

大家都知道,注册表是Windows操作系统的命根子,因此,系统启动时会自动运行注册表检查程序,自动更新备份注册表文件。在系统盘的Windows目录中有一个“”,每天所执行的默认操作都是在它的控制下运行的,我们可以利用这一原理实现对我们重要文件的备份。

第一步:打开资源管理器,找到该文件,用记事本程序打开它。我们可以清楚地看到共有五个参数,如图所示。

(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 在“”的最后有如下注释内容“;Files=[dir code,]file1,file2,file3”,将其前面的注释符号“;”去掉,你就可以自己DIY需要注册表检查程序备份的重要文件了。默认情况下,注册表检查程序创建注册表备份文件时,会将“”、“”、“”和“”四个文件保存在“cab”压缩文件中,如果你需要将其他重要的系统配置文件添加到此压缩文件中,可在“Files=”后面输入“[目录代码],文件名1,文件名2,文件名3”,文件名之间以逗号相隔,目录代码含义如下:

10 代表C:Windows目录

11 代表C:WindowsSystem目录

30 代表C盘根目录

31 代表Windows系统所在盘的根目录

例如要把和两个文件放到备份文件中,可设置参数为“File=30,,”。

3.硬盘(U盘)也需个性化

第一:给硬盘(U盘)DIY一个可爱的图标

我们首先将硬盘的生硬图标替换为我们喜欢的图标,给硬盘披上美丽的彩衣。首先准备一图标文件,你可以用图标制作程序制作自己的图标文件,也可以使用现成的图标文件,最好是保存到硬盘某一个分区的根目录下。接着打开记事本程序,录入以下内容:

[autorun]

ICON=******.ICO

其中“******”是图标文件的路径及图标文件名,请自行修改为具体的图标文件的路径及图标文件名。录入完毕,另存为“”,并将其剪切到某一个你欲扮酷的分区的根目录下。

第二:让硬盘能歌善舞

想不想当你双击了硬盘分区或是点右键选择右键菜单中的“自动播放”之后,如图3所示,就自动打开音乐播放程序,开始播放音乐文件,让动听的音乐时刻环绕在你的左右。心动了吧,其实十分简单,Come On。

接着在“”文件中录入以下内容:

OPEN=D:Program Filesfoobar2000

d:

其中“D:Program Filesfoobar2000

”是笔者喜爱的播放器Foobar2000的具体位置,如果你用的是Winamp或其它的播放器,请替换为具体的播放器所在的位置,“d:”是Foobar2000

播放器的播放列表文件,你也可以替换为某一个具体的音乐文件所在的路径。如果你用的是Winamp则播放列表文件应是“*.m3u”。 利用此方法也可以设置当双击硬盘分区时自动播放影视文件。

4.无人值守安装Windows 98

在Windows 98安装光盘中有一个Batch工具,可以制作用于无人值守安装的脚本,即生成一个包含安装Windows 98时需要和安装向导进行交互的各种信息的INF文件——。

首先找到位于Windows 98安装光盘“/tools /reskit/batch”目录中的“setup”程序图标安装Batch98工具。

接着,运行Batch工具,按照向导提示生成“”文件,并将该文件保存到软盘中。具体的生成方法请参考有关资料,这里不再赘述。

当需要重新安装Windows 98时,用启动盘进入到DOS提示符下,将保存有“”文件的软盘插入软驱,将Windows 98安装光盘插入光驱,在DOS提示符后键入如下命令:“x:/win98/setup a:”,回车后即可。其中“X”为光驱和盘符。

5.将屏保请进右键菜单

当我们有事暂时离开一会儿,利用设有密码的屏幕保护程序可以保护我们当前的操作不被他人偷看。但是,在默认的设置中,屏幕保护程序最快也要在1分钟以后才能够启动,那么怎样才能快速激活屏幕保护程序呢?

最常见的方法是在桌面上建立一个启动屏保的快捷方式,在需要时双击即可启动。另外,我们还可以将屏保请进右键菜单!

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

[version]

signature=”$chicago$”

[defaultinstall]

AddReg=AddMe

[AddMe]

HKCR,"CLSIDshellpingbao",,,"屏幕保护"

HKCR,"CLSIDshellpingbaoCOMMAND",,," /S "%1""

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

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

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

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

(以上程序在复制过来的时候,有部分字符被系统自动省略了,所以直接复制这里的字段是不可用的,想看真实的原码请看参考资料网址的图文说明!还有这个右键是在我的电脑上右键而不是桌面!)

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=[,]...

Signature-name

参数可以取值 $Windows NT$, $Chicago$, or $Windows 95$ (引号括起来) .

如果不是以上这些字符串,则不被认可为 inf 文件。

Class-name

此参数用于安装设备驱动。详细信息见 DDK Programmer's Guide.

GUID

此参数用于安装设备驱动。详细信息见 DDK Programmer's Guide.

INF-creator

标示 INF 的创建者 . 典型的情况,此值为 inf 文件的创建者所在组织

INF 文件必须包含 SourceDisksFiles 和 SourceDisksNames 节。这些文件的描述文件通常命名为 . 如果文件名不是特别指定, SourceDisksNames 和

SourceDisksFiles 必须出现在当前 inf 文件中

以下为典型的例子:

[Version]

Signature="$Windows NT$"

Class=Mouse

ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}

Provider=%Provider%

LayoutFile=

[Strings]

Provider="Corporation X"

此节指定包含的安装指令节,每一个条目将会成为一节

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= @

此文件将拷贝到缺省目标目录。

为适应不同平台,可以在 install 节后加上不同的后缀。可以出现

这样的节名。 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]

[mouclass_CopyFiles]

[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

可选,例如

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 文件中的条目将对应到注册表。

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]

参数说明见上

此节删除、替换或者新增 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% 表示 存在于 System32 目录中。

以下为例子:

%11%, Section1,, Value1=2 ; 新增一个条目

%11%, Section2, Value3=*, ; 删除老条目

%11%, Section4, Value5=1, Value5=4 ; 替换老条目

[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_es]

AddService = sermouse, 0x00000002, sermouse_Service_Inst, sermouse_EventLog_Inst ; Port Driver

AddService = mouclass,, mouclass_Service_Inst, mouclass_EventLog_Inst

; Class Driver

[Service Install] 此节列出将要安装的每一个服务信息

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 = %c%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 1 ; SERVICE_SYSTEM_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%

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%system32drivers 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 所在目录

subdir

子目录名

可选项 DefaultDestDir 提供缺省的目标目录。如果 DefaultDestDir 未用于 DestinationDirs 节,缺省的目录设为 drid_system.

[SourceDisksFiles] 此节指定源安装盘上的文件

为了允许多操作系统分发源文件,你可构造针对特定平台的 SourceDisksFiles 节举例来讲, 在 MIPS 平台上,所有安装功能在用到 SourceDisksFiles 节将首先查找 S

节。 如果安装功能未找到 节 , 或者某个特定行未能在那里找到,安装功能将使用 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 节。此行为直接或间接影响安装功能处理 SourceDisksNames 节作为其进程的一部分。

大小写不敏感的前缀可为:

alpha

mips

ppc

x86

[SourceDisksNames[.platform]]

disk-ordinal="disk-description"[,[disk-label],

.

platform

指示源文件应用的平台指示符。

disk-ordinal

磁盘序号

disk-description

“”包含的字符串,用于标示磁盘。

disk-label

磁盘卷标

unused

保留未用

path

可选参数,源文件的绝对路径,如果未用,则表示示根目录

如下例子中, 所有平台都一样,且存在于源盘 1 的 common 目录。圆盘 1 将所有平台都一致的文件存在于 common 目录中。 文件特定于平台,磁盘 2 指示安装功能针对每一个平台的特定目录。 文件特定于 MIPS 平台。

[SourceDisksNames]

1 = "Windows NT CD-ROM", Instd1,, common

[]

2 = "Windows NT CD-ROM", Instd1,, alpha

[]

2 = "Windows NT CD-ROM", Instd1,, mips

[SourceDisksNames.x86]

2 = "Windows NT CD-ROM", Instd1,, x86

[]

2 = "Windows NT CD-ROM", Instd1,, ppc

[SourceDisksFiles]

= 1

= 2

[]

= 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%%;%%SystemRoot%%"

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

Open=X:“程序”.exe或者“命令行”

shell“关键字”=“鼠标右键菜单中加入显示的内容”

shell“关键字”command=“要执行的文件或命令行”

//选中右键菜单新增选项执行的程序或者命令

//给X盘一个图标

//双击X盘执行的程序或命令

//右键菜单新增选项

文件

文件是从Windows95开始的,最初用在其安装盘里,实现自动安装,以后的各版本都保留了该文件并且部分内容也可用于其他存储设备。

其结构有三个部分:[AutoRun] [] [DeviceInstall]

[AutoRun]

//表示AutoRun部分开始

Icon=X:“图标”.ico

Open=X:“程序”.exe或者“命令行”

shell“关键字”=“鼠标右键菜单中加入显示的内容”

shell“关键字”command=“要执行的文件//选中右键菜单新增选项执行的程序或者命//给X盘一个图标

//双击X盘执行的程序或命令

//右键菜单新增选项

或命令行” 令

[AutoRun]适用于Windows95以上系统与32位以上CD-ROM,必选。

[]适用于基于RISC的计算机光驱,适用系统为Windows NT 4.0,可选。

[DeviceInstall]适用于Windows XP以上系统,可选。

[编辑本段]

[AutoRun]部分的命令及其详解

1、DefaultIcon

含义:指定应用程序的默认图标。

格式:

DefalutIcon=图标路径名[,序号]

参数:

图标文件名:应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。

序号:当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。

备注:

应用程序的默认图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。

图标路径名的默认目录是设备根目录。

2、Icon

含义:指定设备显示图标。

格式:

Icon=图标路径名[,序号]

参数:

图标文件名:应用程序的默认图标路径名,格式可以为.ico、.bmp、.exe、.dll。当文件格式为.exe和.dll时,有时需要使用序号来指定图标。

序号:当文件格式为.exe和.dll时,文件可能包括多余一个图标,此时需要使用序号来指定图标,需要注意的是,序号是从0开始的。

备注:

设备显示图标将在windows explorer核心的驱动显示窗口中替代设备的默认图标来显示。

图标路径名的默认目录是设备根目录。

当存在应用程序默认图标(DefaultIcon)时,本命令无效。

3、Label

含义:指定设备描述

格式:

Label=描述

参数:

描述:任意文字,可以包括空格。

备注:

设备描述将在windows explorer核心的驱动显示窗口中替代设备的默认描述卷标来显示。

在非windows explorer核心的驱动显示窗口中(例如右击设备选择属性)显示的仍然是设备的卷标。

4、Open

含义:指定设备启用时运行之命令行。

格式:

Open=命令行

(命令行:程序路径名 [参数])

参数:

命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用打开或使用ShellExecute命令。

备注:

命令行的起始目录是设备根目录和系统的$Path环境变量。

5、ShellExecute

含义:

指定设备启用时执行文件。(操作系统支持未知)

格式:

ShellExecute=执行文件路径名 [参数]

参数:

执行文件路径名:设备启用时执行文件路径名。可以是任意格式文件。系统会调用设置的程序执行此文件。

参数:参数,根据执行文件作调整

备注:

命令行的起始目录是设备根目录和系统的$Path环境变量。

6、Shell关键字Command

含义:

定义设备右键菜单执行命令行。

格式:

Shell关键字Command=命令行

(命令行:程序路径名 [参数])

参数:

命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用打开。

备注:

命令行的起始目录是设备根目录和系统的$Path环境变量。

7、Shell关键字

含义:定义设备右键菜单文本。

格式:

Shell关键字=文本

参数:

关键字:用以标记菜单,可以使用任何字符表示,包括空格。

文本:在右键菜单中显示的文本。可以使用任何字符,不能存在空格。

备注:

在同一文件中,不同右键菜单关键字不同,相同右键菜单关键字相同。

右键菜单文本中可以使用&设定加速键,&&输出一个&。

Shell关键字Command命令Shell关键字两者缺一不可,顺序无所谓。

当不存在Open、ShellExecute与Shell命令时,设备启用时运行第一个设备右键菜单指定命令。

8、Shell

含义:定义设备启用时运行之设备右键命令。

格式:

Shell=关键字

参数:

关键字:标记过的菜单关键字

备注:

Shell指定的关键字可以在文件的任意部分。

OpenShellExecuteShell命令后定义的优先级高。

这个命令用来定义程序的名字,比方说:

[autorun]

shellexecute=rundll32 ght

action=打开文件夹

那么在右键菜单显示的就是"打开文件夹",而执行的命令就是"rundll32 ght"

10.注释

与其他inf文件一样,";"之后的内容会被当做注释,不参与编译.

[编辑本段]

鉴别方法

这个病毒有着非常明显的外部特征,但是却又常常容易被忽略。之所以容易忽略,是因为它并不会令电脑变慢,所以很多人就不注意到。但是如果我们在双击打开U盘时,不是在当前窗口打开,而是在新窗口中打开,那么则有可能中毒了。这时可以在“我的电脑”中右击盘符,看其最上方的一项命令是什么,如果为“Auto”,而不是正常的“打开”,那么中毒的可能性则进一步增大;但要确认中毒,还需要我们在地址栏中输入E:(E盘需换成实际的盘符),如果打开的文件中open行后所跟的文件是这样的文件,那么则肯定中毒了。

[编辑本段]

应对策略

1、在插入U盘时按住键盘 shift 键直到系统提示“设备可以使用”,然后打开U盘时不要双击打开,也不要用右键菜单的打开选项打开,而要使用资源管理器(打开我的电脑,按下上面的“文件夹”按钮,或者开始-所有程序-附件-windows资源管理器)将其打开,或者使用

快捷键winkey+E打开资源管理器后,一定通过左侧栏的树形目录打开可移动设备!(要养成这样的良好习惯)

2、如果盘内有来路不明的文件,尤其是文件名比较诱惑人的文件,必须多加小心;需要特别提示的是,不要看到图标是文件夹就理所当然是文件夹,不要看到图标是记事本就理所当然是记事本,伪装图标是病毒惯用伎俩。

3、要有显示文件扩展名的习惯 。方法:打开“我的电脑”,工具--文件夹选项--查看,去掉“隐藏已知文件类型的扩展名”的勾,建议选择显示扩展名同时选上“显示隐藏文件”,去掉“不显示系统文件”的勾,这样可以对病毒看得更清楚。有图标的诱人的病毒文件基本都是可执行文件,显示文件扩展名之后,通过文件名后的".exe"即可判断出一个文件可执行文件,从而不会把伪装的病毒可执行文件误认为是正常文件或文件夹。

4、最后不管你用什么办法,或者用什么软件,插入U盘然后用这个方法检验你有没有中型病毒的风险。

下面这个批处理可以检验你插入或打开U盘时是否有激活病毒的风险。运行这个批处理,然后按提示操作。注,批处理使用方法:打开开始菜单-附件-记事本,复制批处理内容进去,文件-另存为-文件名:,保存类型:所有文件-保存。然后找到你保存的位置,会出现一个批处理文件,双击运行即可。

@echo off&setlocal enabledelayedexpansion

echo 请在U盘和电脑没有病毒的情况下插入一个U盘&set /p "d=请输入U盘的盘符(比如输入H): "

set "d=!d:~0,1!"&set "a=.!random!.tmp"

if exist !d!: -s -h -r !d!:&ren !d!: !a!

(echo [autorun]&echo open=&echo shellexecute=&echo shell=explore

echo shellopencommand=&echo shellexplorecommand=)>!d!:

echo 现在删除并重新插入U盘&echo 打开U盘,如果出现"计算器"&echo 说明你有中类型病毒的机会

echo 完成后按任意键继续&pause>nul

del !d!:&if exist !d!:!a! ren !d!:!a! &goto :eof

推荐的其他方法:

1、推荐一种彻底拒绝类型病毒的方法.

运行下面这个批处理,就可以保证插入以及打开磁盘时不中病毒(不会占用计算机资源,运行一次即可对当前用户名生效):

@ECHO off

DELETE HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /f

ADD HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2

ECHO HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 []>%temp%

%temp%

GOTO :eof

如果想再恢复功能运行这个批处理:

@ECHO off

ECHO HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 [7]>%temp%

%temp%

DELETE HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2 /f

ADD HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2

GOTO :eof

2、对于伪装型病毒,可以通过它的可执行属性判断出来。

除通过选择文件夹选项“不隐藏扩展名”外,不喜欢显示所有为文件扩展名的用户还可以通过这种方式将可执行文件的特征--".exe"扩展名显示出来,这样病毒伪装成的文件或文件夹会多出一个".exe"。

以管理员身份运行下面的批处理:

@ECHO off

ADD HKCRexefile /v AlwaysShowExt /t REG_SZ /f

/im /f

START %windir%

GOTO :eof

要恢复不显示exe扩展名运行这个批处理:

@ECHO off

DELETE HKCRexefile /v AlwaysShowExt /f

/im /f

START %windir%

GOTO :eof

另一种简单的预防方法

组策略-禁用自动播放

操作步骤为:点击开始→运行→输入,打开组策略编辑器,浏览到计算机配置→管理模板→系统,在右边窗格中双击“关闭自动播放”,对话框中选择所有驱动器,确定即可。

另一种更为简单的免疫办法

建立txt文本文件,命名为闪存免疫,输入以下代码:

md c:

md

md x:

md (X代表盘符,你有几个盘就可以输入几个)

保存退出,并将TXT文件转化为BAT批处理文件,双击运行,在各个盘符的根目录下会出现文件夹,并且因为它们的文件夹内有不可删除文件所以该文件夹也无法删除。这样,免疫闪存就做成了。感觉非常棒吧

在桌面上建立一个名为的文件夹加上只读及隐藏属性,分别放入不同的盘符根目录中同样也可以达到以上目的[1]

对于md 命令建立的文件夹,在windows下看到的是文件夹下有一个123..的文件夹,以后要再删除该类型文件夹可用

rd

来实现。

保护U盘的方法

U盘对病毒的传播要借助文件的帮助,病毒首先把自身复制到u盘,然后创建一个,在你双击u盘时,会根据中的设置去运行u盘中的病毒,我们只要可以阻止文件的创建,那么U盘上就算有病毒也只能躺着睡大觉了,大家可能也想到这个,但是不管给设置了什么属性,病毒都会更改它,我提到的方法就是,在根目录下,删除文件,然后,根目下建立一

个文件夹,名字就叫,这样一来,因为在同一目录下,病毒就无能为力,创建不了文件了,以后会不会出新病毒,自动去删文件夹,然后再建立文件就不知道了,但至少现阶段,这种方法是非常有效的。但是,由于这个文件夹可以被改名,因此许多新的木马和病毒采用改名后再创建文件来达到感染U盘的目的。不过对于安全意识强的用户,用这种方法来判断自己的U盘是否遭到感染也未尝不可。不过这种方法也有缺陷。

事实表明,目前已经有新的病毒能够有意识地检测的存在,对于能直接删除的则删之,对于“无法删除”的则用重命名的方式毁之;此时,你可以在文件夹下面,用CMD命令建立畸形文件夹就可以很好的防止被病毒删除了.

还有一种很早就出现的以文件名诱骗用户点击的病毒(如:重要文件.exe,小说.exe)。对于以上这两种传播方式的病毒,仅仅建立文件夹是抵御不了的。

[编辑本段]

部分命令简介

[]部分的命令与[AutoRun]部分的命令相同,只不过在基于RISC的计算机光驱中,[]优先级高于[AutoRun]

[DeviceInstall]部分命令及其详解

DriverPath

含义:定义搜索驱动程序目录。

格式:

DriverPath=驱动程序路径

参数:

驱动程序路径:驱动程序所在路径,包括其子路径。

备注:

Windows XP以上支持。

仅CD-ROM支持

当系统监测到一个新的设备时,会提示用户寻找设备的驱动程序。当用户点选此CD-ROM时,当[DeviceInstall]部分存在时,系统会按照DriverPath所标记的路径出寻找驱动程序。未标记的路径系统将忽略查找。当[DeviceInstall]部分不存在时,系统将进行完全查找。

如果不希望系统在此CD-ROM中搜索驱动程序,只加一行[DeviceInstall]不加DriverPath命令即可。

系统识别该文件过程如下:

系统在插入U盘的时候会根据这个文件在注册表[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2]下建立一个u盘的关联项,使双击打开指定的程序(如病毒程序)。

Windows 2000/XP下如何删除文件夹在命令提示符中,输入rd (文件夹路径)即可删除文件夹

如文件夹内有内容可把rd替换为deltree来完成删除。

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

清除autorun病毒的批处理文件代码

u盘插上

首先新建个文本文档,在里面添加以下内容:

@echo on

taskkill /im /f

rem 结束病毒进程(以病毒的进程为例)

taskkill /im

start reg add HKCUSOFTWAREMicrosoftWindowsCurrentVersionEXplorerAdvanced /v ShowSuperHidden /t REG_DWORD /d 1 /f

start reg import

del c:autorun.* /f /q /as

del %SYSTEMROOT%system32autorun.* /f /q /as

del d:autorun.* /f /q /as

del e:autorun.* /f /q /as

del f:autorun.* /f /q /as

del g:autorun.* /f /q /as

del h:autorun.* /f /q /as

del i:autorun.* /f /q /as

del j:autorun.* /f /q /as

del k:autorun.* /f /q /as

del l:autorun.* /f /q /as

start

=====到这里为止(这行不用复制)==========================

其次打开我的电脑,在菜单栏里选择“工具-文件夹选项-查看”,将“隐藏已知文件类型的扩展名”前面的勾去掉-确定-退出窗口。

再次将刚才新建的那个文件文档的文件名,由“新建文本文档.txt”改为“病毒消除.bat”。

最后直接双击它就能清除这个病毒了!

【另外】对于杀毒软件产生的此类文件夹(如超级巡警),可用DOS命令快速干净的删除,方法如下

假设文件夹是在D盘,操作如下: 打开“开始”,选择“运行”,输入“CMD”,打开命令行窗口,在命令行窗口中输入以下命令:

rd /s/q d: (rd 也可以是rmdir,他们是相同的 ),然后回车即可,注意空格!;

/s 表示删除该目录(文件夹),包括里面所有的东西,也包括歧义文件夹,/q 表示不确认就直接删除。

其他盘照此方法执行即可!! !