搜档网
当前位置:搜档网 › INF文件解析

INF文件解析

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,表示下确界。

对于函数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”条目很重要,它表明了设备的类型,常见的类型有:Displa y(显示设备,如显卡)、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节

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

7.String节

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

[编辑本段]

INF应用实例

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

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

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

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

[version]

signature=”$chicago$”

[defaultinstall]

delReg=DeleteMe

[DeleteMe]

HKCU,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“Disable regstryTools”

HKLM,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“Disable regstryTools”

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

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

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

大家都知道,注册表是Windows操作系统的命根子,因此,系统启动时会自动运行注册表检查程序,自动更新备份注册表文件。在系统盘的Windows目录中有一个“S canreg.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,fi

le3”,将其前面的注释符号“;”去掉,你就可以自己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两个文件放到备份文件中,可设置参数为“F ile=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的具体位置,如果你用的是Wi namp或其它的播放器,请替换为具体的播放器所在的位置,“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提示符下,将保存有“msb atch.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”,文件名可任取,扩展名必须是I NF。

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

第三步:当需要运行屏幕保护的时候,回到桌面上,在“我的电脑”图标上点击右键

选择“屏幕保护”选项。点击一下试试,是不是立即启动屏幕保护程序了。

注意:其中的“ssstars.scr”为欲启动的屏幕保护程序的文件名,请用你喜欢的屏幕

保护程序文件来替换;如果你点选右键菜单中的“屏幕保护”选项后,没有反应即没有启

动屏幕保护程序,请将文中的“/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=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"

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

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 文件中的各节。 Co pyFiles 则可例外(如果没有任何文件被拷贝)。

如果安装驱动程序,仅仅使用 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 文件中的条目将对应到注册表。

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-en try 为 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.i ni 表示 CARD.INI 存在于 System32 目录中。

以下为例子:

%11%\sample.ini, Section1,, Value1=2 ; 新增一个条目

%11%\sample.ini, Section2, Value3=*, ; 删除老条目

%11%\sample.ini, 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_Inst.Services]

AddService = sermouse, 0x00000002, sermouse_Service_Inst, sermouse_Ev entLog_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)

如果驱动装载失败,启动失败。如果启动不是在“最后一次正确( LastKnownGoo d. )”控制集,切换到 LastKnownGood 。如果启动试图用于 LastKnownGood, 运行

故障检查例程

SEVERE (0x2)

如果启动不是用于 LastKnownGood , 切换到 LastKnownGood 。如果启动试图 L astKnownGood, 发生错误时继续启动。

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 未用于 Destin ationDirs 节,缺省的目录设为 drid_system.

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

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

ourceDisksFiles.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 文件特定于 MIP

S 平台。

[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\IoLogMs g.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 以及 S tandard 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.inf文件

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

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

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

[AutoRun.alpha]适用于基于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文件,其他格式文件可以使用start.exe打开或使用ShellExecute命令。

备注:

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

5、ShellExecute

含义:

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

格式:

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

参数:

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

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

备注:

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

6、Shell关键字Command

DDK中INF文件详解

安装一个驱动程序 一个后缀是INF的文本文件控制设备驱动程序自动的安装。INF格式类似于WIN 3.x下的老式的.INI文件,但是复杂些。一个INF文件允许自动的或者在对话框的帮助下安装驱动程序文件。 驱动程序安装结束后对系统产生两个持久的影响: 1. 描述驱动程序的系统注册表入口,它的加载顺序和任何适当的配置数据。 2. 驱动程序文件被拷贝到适当的系统路径。 INF文件是影响这些改变的标准的机制,它可以提供定制安装。 使用INF文件自动安装 INF文件随着硬件和驱动程序一起提供,INF文件的结构和内容是驱动程序作者的责任。INF文件结构 INF文件是被分(section)成几个部分的文本文件,每个部分被指定一个标识符号﹐它被中括号([])括起来﹒一些部分的命名是必须的﹐而其它部分是驱动程序特定的﹒每个部分是一 些安装动作﹐或者连接或者列举其它部分﹒ 文件中各个部分的顺序是不重要的﹐因为每个部分都是被命名和连接的﹒一个部分继续直到另一个部分或者遇到文件结束﹒每个部分的标识符号是独一无二的名字﹐为了保持与WIN98的兼容﹐它的长度被限制在28个字符之内﹐可以包含下划线和圆点字符﹐在引用整个名字的前提下﹐可以包含空格字符﹒ 文件内容的一般格式如下: entry = value [, value...] entry是指令﹐关键词或者文件名﹐value是entry被应用的属性﹒ entry或者value名字可以指定为一个使用百分号(%)的代替一些具体数据的字符串﹐分割INF文件的[Strings]提供一个特殊语言ID的值。 Version 部分 一个有效的INF文件从一个命名为[Version]的部分开始,它像一个INF文件的头和标识。 表15.1. [Version]部分的条目 Manufacturers部分

autorun.inf文件编写

autorun.inf是当打开它所在的盘时,就自动运行的小程序.比如我们把MTV光盘放入光驱的时候,有时候就会自动开始播放了. autorun.inf必须放大分区的根目录下.它是由一个或多个“节”组成,每个“节”民须以节名作为开始的一行,节名必须用中括号[]括起来,节名之下则为本节中的命令。其中Aut orun.inf一共支持三个节,它们分虽为[autorun]、[autorun.a lpha]、[Deviceinstall],其中只有[autorun]是必须存在的。a utorun.alpha来说我们很少用到,而Deviceinstall只能在X P下使用,可以利用它指定硬件向导进行递归搜索的子目录。 AUTORUN的功能 1.运行命令Open=写上所要运行的命令,必须是.EX E .BAT .COM的文件,可以不在根目录下,但得指定路 径 2.icon=给盘加图片,支持ICO和BMP这两种格式 3.添加右键菜单Shell\n=要显示的菜 单 shell\n\command=要运行的命令要打开的文件autorun可以被黑客利用,我们可以关闭自动运行,让它不能 发生作用

方法: 1.只禁止硬盘的自动运行:注册表编辑器展开HKEY_C URRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Exploer主键下,右边窗口中的二 进制值“NoDriveTypeAutoRun”决定了是否执行Auto Run功能,将“NoDriveTypeAutoRun”的默认键值由9 5, 00,00,00,改为9D,00,00,00,然后关闭注册表编 辑器,重启电脑即可。 2.只禁止光盘的自动运行,可以将“NoDriveTypeAutoRu n”的键值改为BD,00,00,00 资料2 众所周知,autorun.inf文件是U盘病毒传播的主要途径. 因此我们了解它的构造及运行机制对我们来说还是比 较有用的.下面主要讲autorun.inf文件的编写规则.相 对于inf文件的编写,他还是想当的简单的. 一.理解autorun.inf文件 简单的说autorun.inf文件是一种具有特定结构的必须放在驱动器根目录下的文件.它控制着双击驱动 器时的自动播放选项.

USB INF文件详解(USB)

INF文件详解 INF文件格式要求 一个INF文件是以段组织的简单的文本文件。一些段油系统定义(System-Defined)的名称,而另一些段由INF文件的编写者命名。每个段包含特定的条目和命名,这些命名用于引用INF文件其它地方定义的附加段。 INF文件的语法规则: 1、要求的内容:在特定的INF文件中所要求的必选段和可选段、条目及命令依赖于所要安装的设备组件。端点顺序可以是任意的,大多数的INF文件安装惯用的次序来安排各个段。 2、段名:INF文件的每个段从一个括在方括号[]中的段名开始。段名可以由系统定义或INF编写者定义 在Windows 2000中,段名的最大长度为255个字符。在Windows 98中,段名不应该超过28个字符。如果INF设计要在两个平台上运行,必须遵守最小的限制。段名、条目和命令不分大小写。在一个INF文件中如果有两个以上的段有相同的名字,系统将把其条目和命令合并成一个段。每个段以另一个新段的开始或文件的结束为结束。 3、使用串标记:在INF文件中的许多值,包括INF编写者定义的段名都可以标示成%strkey%形式的标记。每个这样的strkey必须在INF文件的Strings 段中定义为一系列显示可见字符组成的值。 4、行格式、续行及注释:段中的每个条目或命令以回车或换行符结束。在条目或命令中,“\”可以没用做一个显示的续行符;分好“;”标示后面的内容是注释;可以用都好“,”分隔条目和命令中提供的多个值。 INF文件举例 下面是一个完整的.inf文件,它是Windows 2000 DDK提供的USB批量阐述驱动程序范例中所附的.inf文件。 ; Installation inf for the Intel 82930 USB Bulk IO Test Board ; ; (c) Copyright 1999 Microsoft ; [Version] Signature="$CHICAGO$" Class=USB ClassGUID={36FC9E60-C465-11CF-8056-444553540000} provider=%MSFT% DriverVer=08/05/1999 [SourceDisksNames] 1="BulkUsb Installation Disk",,, [SourceDisksFiles] BULKUSB.sys = 1 BULKUSB.inf = 1

autorun-ini详解

备注: 应用程序的默认图标将在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文件,其他格式文件可以使用start.exe打开或使用ShellExecute命令。 备注:

命令行的起始目录是设备根目录和系统的$Path环境变量。 5、ShellExecute 含义: 指定设备启用时执行文件。(操作系统支持未知) 格式: ShellExecute=执行文件路径名 [参数] 参数: 执行文件路径名:设备启用时执行文件路径名。可以是任意格式文件。系统会调用设置的程序执行此文件。 参数:参数,根据执行文件作调整 备注: 命令行的起始目录是设备根目录和系统的$Path环境变量。 6、Shell\关键字\Command 含义: 定义设备右键菜单执行命令行。 格式: Shell\关键字\Command=命令行 (命令行:程序路径名 [参数]) 参数: 命令行:自动运行的命令行,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开。 备注: 命令行的起始目录是设备根目录和系统的$Path环境变量。 7、Shell\关键字 含义:定义设备右键菜单文本。 格式: Shell\关键字=文本 参数: 关键字:用以标记菜单,可以使用任何字符表示,包括空格。 文本:在右键菜单中显示的文本。可以使用任何字符,不能存在空格。 备注: 在同一Autorun.inf文件中,不同右键菜单关键字不同,相同右键菜单关键字相同。 右键菜单文本中可以使用&设定加速键,&&输出一个&。 Shell关键字Command命令Shell关键字两者缺一不可,顺序无所谓。 当不存在Open、ShellExecute与Shell命令时,设备启用时运行第一个设备右键菜单指定命令。 8、Shell

Resin配置步骤及中文配置文件说明

为java web应用部署resin服务器简略步骤: 1 点击Run图标下面的Run configuration 或者debug图标下面的debug configuration 2 新建new launch configuration 填写Name Project MainClass 注意左侧选择未java application 参考配置: Name:test1(自己根据情况填写) Project:你的项目名字 MainClass:com.cauche.server.resin.Resin Program Argument:-conf "E:\resin-4.04\conf\resin-test1.xml" //配置文件的目录 VM argument:-Dresin.home = E:\resin-4.04 -Djava.util.logging.manager = com.cauche.log.LogManagerImpl Resin配置文件 2s

更多生物Mod 说明

原帖地址:https://www.sodocs.net/doc/b58768389.html,/thread-67619-1-1.html 本帖仅对原帖进行翻译,未对内核进行汉化,并且不提供下载地址。 由于本小组已解散,本帖日后内容将有本人不定时更新,如有信息错漏请 私信本人。 转载请注明出处!! 2013/01/23 经过一个多星期由组员空余时间工作,Mo'Creatures Mod的原帖翻译文档终于宣告完工。由于本文档经过不同翻译员共同合作,在不同时间段工作完成,难免会有错漏,希望大家谅解并提出,以便及时更正。感谢大家对HAYO汉化组的支持!

MOD中文名:更多生物MOD 版本号:4.5.1(for1.4.7) MOD英文名:DrZhark's Mo'Creatures Mod MOD原帖地址:https://www.sodocs.net/doc/b58768389.html,/topic/81771-147-mo-creatures-v451-with-elephants-mammoths-k omodo-dragons-more-ostriches-better-jellyfish-more-fairy-horses/ MOD下载(afsddsg提供):https://www.sodocs.net/doc/b58768389.html,/thread-71062-1-1.html MOD汉化版下载(703202511提供):https://www.sodocs.net/doc/b58768389.html,/thread-73487-1-1.html 其他需要的文件: 1. Forge 客户端 2. GUI Api 3. CustomMobSpawner 为Minecraft升级Mod是一件非常庞大的工作。我虽然发布了本MOD但是仍然有一些Bug尚未得到修复。目前我正在解决这些问题: 已知漏洞(for1.4.7): -鱼缸BUG -一些粒子会变黑 安装方法: 1.安装Forge(解压并放进minecraft.jar内) 2.安装GUI API(解压并放进minecraft.jar内) 3.删除minecraft.jar内的META-INF文件夹 4.将MoCreatures.zip和CustomSpawner.zip放进.minecraft/mods内 声明: 这一MOD是我耗费无数时间和精力后心血的结晶。您可以无偿地进行下载,但是如果此MOD对您的游戏存档造成任何损坏我将不负任何责任。本MOD在本文之外不允许以任何方式进行散布。您不允许以“懒人包”、安装器或插件的方式进行传播本MOD。多人游戏插

用inf文件添加服务

用inf文件添加服务 增加一个服务: [Version] Signature="$WINDOWS NT$" [DefaultInstall.Services] AddService=inetsvr,,My_AddService_Name [My_AddService_Name] DisplayName=Windows Internet Service Description=提供对 Internet 信息服务管理的支持。 ServiceType=0x10 StartType=2 ErrorControl=0 ServiceBinary=%11%\inetsvr.exe 保存为inetsvr.inf, 然后:rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf 这个例子增加一个名为inetsvr的服务。 几点说明: 一最后四项分别是 服务类型: 0x10为独立进程服务, 0x20为共享进程服务(比如svchost); 启动类型: 0 系统引导时加载, 1 OS初始化时加载, 2 由SCM(服务控制管理器)自动启动, 3 手动启动, 4 禁用。 (注意,0和1只能用于驱动程序)

错误控制:0 忽略, 1 继续并警告, 2 切换到LastKnownGood的设置, 3 蓝屏。 服务程序位置: %11%表示system32目录, %10%表示系统目录(WINNT或Windows), %12%为驱动目录 system32\drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。 这四项是必须要有的。 二除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。 三 inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。 删除一个服务: [Version] Signature="$WINDOWS NT$" [DefaultInstall.Services] DelService=inetsvr 另外用srvinstw.exe添加服务的时候,有时会出现1053 服务没有及时响应启动或控制请求。看来他对有的程序处理的效果并不是太好,他对添加注册表信息并不完全.所以还是推荐手工添加了.

INF文件编写

㈠、INF文件是什么 .INF是Device Information File(设备信息文件)的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用.INF文件来安装的。.INF文件从Windows3.X时代就开始大量被使用了。(说明:绿色部分可以忽略,仅做说明。蓝色部分为重点突出,文中要点,红色部分为特别注意,看仔细哦。)先看这个最常见的.INF文件哈: ;示例04寒夜孤星AutoRun.inf【自动播放】 [AutoRun] open=setup.exe icon=%SystemRoot%\system32\SHELL32.dll,27 怎么样?没有比这个再简单的.INF文件了吧?这个就是所有.INF中最知名的啦!用于自动播放滴.INF,通常位于根目录下。那么.INF是不是就很简单了捏?也不是。如果你不怕头晕的话,就接着看下去哈。。。 .INF文件是一种具有特定格式的纯文本文件,我们可说它是一种安装脚本(SetupScript)。虽然.INF只是纯文本文件,但是当我们在文件管理器explorer对.INF文件按鼠标右键后,在右键菜单上就会出现“安装I”命令。 此“安装”动作关联命令行程序基本形式为: RunDll/rundll32setupx.dll/SetupAPI.DLL,InstallHinfSection section reboot-mode inf-name 其中,rundll/rundll32程序以命令行的形式调用Windows的动态链接库,其命令格式为: rundll.exe/rundll32.exe,<入口点>,<调用参数> setupx.dll/SetupAPI.DLL是安装API(Setup API)函数库,setupx.dll/SetupAPI.DLL与其后的入口点用逗号(,)分开,入口点是大小写敏感的。 Section是INF文件内初始执行节名,首先执行该节内容,默认情况下名称为“DefaultInstall”,系统用户一般不宜对此做任何改动,如被改动,则在后续INF文件的Install节使用相应修改后的名称。reboot-mode是重启动参数,指示在INF文件执行后对系统的设置进行了改变,操作系统是否重新启动。该参数一般设为132或4,即由安装程序决定是否必须重启动,因为某些设置的改变必须在重启动后才能生效。 inf-name是INF文件的名称,“%1”即为所选中文件本身。 Windows XP SP3下为(示例):%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall132%1 说明:rundll及Setupx.dll在win9x系列的操作系统使用。在以后的讲解中不再区分这些。。。

AHCI驱动下载与手动安装图解

AHCI驱动下载与手动安装图解 2010年01月22 | 分类: 网络日志| 14 条评论| 标签: Maintain 天缘早前写过《AHCI模式的驱动下载、安装及蓝屏问题综合》一文,但是没有对具体安装过程进行过多描述,实际上里面还有好几个重点问题没说清楚,很多新手网友,按照该文章描述很难安装成功,天缘本文就来实际图解安装示范一下,顺便补充说明几个注意点,如果您的Windows XP、Vista、Windows 7系统需要预安装或后安装SATA/RAID/AHCI驱动,相信本文对你有些帮助。 一、准备AHCI驱动 1、关于AHCI基础知识,请参考《AHCI模式的驱动下载、安装及蓝屏问题综合》一文。 2、安装AHCI驱动之前,请先确认桌面上、系统盘没有重要的东西需要备份,因为如果安装失败可能导致系统无法启动,除非你有第二系统或应对修复方法。 3、准备AHCI驱动: A、对于台式机用户,主板的驱动光盘中一般都有这个东西,笔记本用户就不一定了,留意一下驱动盘中是否有类似Intel Matrix Storage Manager Driver、Matrix Storag、SATA Driver、AHCI字样的驱动软件。 B、如没有随机驱动盘就只能自己到官网找了,一定要注意该AHCI驱动的支持的Windows或Linux操作系统版本。 C、实际上AHCI驱动的通用性很强,只需要按照芯片组(AM D、INTEL、NV...,具体可在笔记本或主板说明书里查看)到网上都能找到,可以查看驱动包中的类似iaAHCI.inf文件中,AHCI驱动下载一文中也有ThinkPad Intel(R) Matrix Storage Manager Driver(Win 2k_XP)驱动,不过该驱动是2006年的,适合一些老主板:iaStor_ICH7DH = "Intel(R) 82801GR/GH SATA RAID Controller (Desktop ICH7R/D H)" iaAHCI_IC H7R = "Intel(R) 82801GR/GH SATA AHCI Controller (Desktop ICH7R/D H)" iaAHCI_IC H7M = "Intel(R) 82801GBM SATA AHCI Controller (Mobile ICH7M)" iaStor_ICH6R = "Intel(R) 82801FR SATA RAID Controller (Desktop IC H6R)" iaAHCI_IC H6R = "Intel(R) 82801FR SATA AHCI Controller (Desktop ICH6R)" iaAHCI_IC H6M = "Intel(R) 82801FBM SATA AHCI Controller (Mobile ICH6M)"

Microsoft Office 2007 集成 SP3详解

office 2007 集成 SP3 免激活完全无人值守安装---留给office 2007最后的眷恋 方案一 准备: 1、microsoft office 2007 原版 2、PowerISO、UltraISO 、DAEMON Tools 都可以 制作步骤: 1、定制安装自定义安装包 用虚拟光驱加载microsoft office 2007原版安装光盘ISO镜像,如果光盘自动运行,请退出。然后在“开始”、“运行”里输入X:\setup /admin命令,(X为光盘镜像所在的盘符)进入自定义工具界面,选择新建自定义文件。 一般只需要对下面的几个地方进行相关的设置就行了。

在授权和用户界面里,我们要输入序列号,并选上接受许可协议,同时把“完成通知”前面的勾去掉,这样程序安装完了就会自动退出。 在“设置功能安装状态”里,可以选择你需要安装的组件,记得必须选择“从本机运行全部程序”, 在“配置快捷方式”里,按自己的需要进行设置,

完成相关的设置后,

点击“文件”菜单栏的“保存”, 把设置保存为setup.msp文件,并保存到D盘 2、修改光盘自动运行配置文件autorun.inf 把光盘根目录里的autorun.inf文件复制到D盘,用记事本打开, 把里面的open=setup.exe这一行改为open=setup /adminfile setup.msp 并保存。 3、制作光盘镜像 先把microsoft office 2007原版安装光盘ISO镜像从虚拟光驱里卸载,然后用UltraISO打开光盘镜像,把刚才定制的配置文件setup.msp和autorun.inf文件添加到镜像的根目录,并替换掉原来的autorun.inf文件,

inf格式说明

INF是Device Information File(设备信息文件)的简称,设备管理器通过读取相应的INF文件来安装驱动程序, 其中记录了驱动程序安装的所有操作,包括复制文件到指定路径、添加或修改注册表、加载系统服务等,而实际的 驱动程序则存放在sys、dll、vxd等文件中。 \subsubsection{INF文件的规则} \begin{description} \item [规则一:] INF 文件是分节的,每一个 INF 文件有许多的节组成,节名用方括号括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。 \item [规则二:]在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。 \item [规则三:] INF 文件对大小写不敏感。 \item [规则四:] ";" 号后面的内容为注释。 \item [规则五:] 如果一个条目的内容过多,在一行无法书写完全,则用 $\slash$将一行内容书写为多行。 明白了INF文件的规则后,让我们一起来解剖INF文件的结构。 \end{description} \subsubsection{INF文件的构成} 在C:Windows下有一个名为INF的隐藏文件夹,我们可以找到很多??.INF、??.pnf格式的文件,前者即所谓的设备信息文件, 后者是预编译信息文件。用记事本可以打开INF文件,其中记录了必要的硬件安装信息,包括设备类型、设备生产厂商名称、 适用产品等信息,Windows可以据此自动安装驱动程序。如图1所示,这是CPU的INF文件,笔者以此为例介绍主要构成部分: \begin{enumerate} \item $\left[ version \right]$ :版本信息 \\ 每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。 在该节中如果出现“signature="$CHICAGO$"”这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统, 如果包含“signature="$Windows NT$"”这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。 另外,该节中“CLASS”条目很重要,它表明了设备的类型,常见的类型有:Display(显示设备,如显卡)、Media(多媒体设备, 如声卡)、Net(网络设备,通常是网卡)、Modem(调制解调器)、Printer(打印设备)、Image (图像捕获设备,如摄像头)。

inf

INF文件简介 INF文件即设备信息文件(Device Information File),是Windows操作系统下用来描述设备或文件等数据信息的文件,其是一个文本文件。INF文件是由标准的ASCII 码组成,可以用任何一款文字编辑器查看或修改其中的内容。INF 文件功能非常强大,几乎能完成日常操作的所有功能,可以把它看成是Windows 系统底下的超强批处理。 INF文件的任务 inf文件可以做很多事情,但97%的inf文件是三个任务 一、识别特定的设备。主要是通过硬件ID和兼容ID号,系统从总线驱动读到的硬件ID号和inf文件中的硬件ID号进行比对,当匹配上后,系统知道这个inf文件就是为了这个设备来用的。(匹配不上了,当然不要进行后面的工作) 二、将文件从介质((如安装光盘))拷贝到系统。主要是sys文件。 三、在注册表中添加一个入口。这是描述设备和它相关的设备,提供设备或驱动指定配置信息,描述给服务驱动管理器的"服务".(这个服务,并不同于一个开机运行的一个应用程序) 两个容易混淆的问题! 一、inf文件并不是同一个语言文件一样,从文件开头运行到文件结束,inf 文件的运行顺序是基于安装阶段的不同。 二、绝大多数的节(Section)是被层次定义好的。(也就是说,这个节的名字是以前某个节定义的,或者系统定义的) INF文件的结构 Inf文件类使用了一个叫做节的Section东西。Inf文件并不是按照文件中的顺序来运行的,所以节可以放在任何地方,但是有个节是必须在最前面的,它是[Version],有个节一直在最后,它是[Strings] 因为在设备管理器和驱动中要使用一些字符串,所以在Inf文件中定义了[Strings]这个节。 [SectionName] 节名称说明 [Version] INF文什的开始,描述版本信息,主要用于版本控制 [Strings] 字符串信息,用于常量定义

JSP项目目录路径详解

jsp WEB-INF,META-INF文件详解 WEB-INF /WEB-INF/web.xml 你的Web应用程序配置文件,这是一个XML文件,其中描述了servlet 和其他的应用组件配置及命名规则; /WEB- INF/classes/ 这个目录包含了站点所有用的class 文件,包括servlet class 和非servlet class,他们不能包含 在 .jar文件中。 站点的类的存放规则应该按照Java的打包规则执行。例如:有一个类命名为 com.mycompany.mypackage.MyServlet,你应该按照以下形式部署:/WEB-INF/classes/com /mycompany/mypackage/MyServlet.class ; 按照包名结构放置各个类(JavaBean 和Servlet) /WEB- INF/lib/ 存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件 /WEB- INF/src/ src=source 源码目录,按照包名结构放置各个java文件 /WEB- INF/database.properties 数据库配置文件 # database.properties jdbc.drivers = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost/ams2 https://www.sodocs.net/doc/b58768389.html,ername = root jdbc.password = sh2007ai # table define ams2.table.dialogue = content_dialogue ams2.table.expansion = content_expansion_sentence ams2.table.vocabulary = content_vocabulary /WEB-INF/tags/ 标签文件库,存放了客户定义的标签文件,该目录并不一定为tags,用户可以根据自己的喜好和习惯为自己的标签文件库命名,当使用了用户定义的标签文件库名称时,在用户使用标签文件时就必须声明正确的标签文件库路径。例如:当自定义标签文件库名称为simpleTags 时,在使用simpleTags 目录下的标签文件时,就必须在jsp 文件头声明为:<%@ taglib prefix="tags" tagdir="/WEB-INF /simpleTags" % >; /WEB-INF/jsp/ Jsp 1.2 以下版本的文件存放位置。改目录没有特定的声明,同样,用户可以根据自己的喜好与习惯

怎样删除autorun.inf文件夹和autorun.inf文件的方法

假设autorun.inf文件夹是在D盘,操作如下:打开“开始”,选择“运行”,输入“CMD”,打开命令行窗口,在命令行窗口中输入一下命令: 第一步:输入D: 然后回车 第二步:输入rmdir /s autorun.inf 然后回车 第三步:当出现提示时,按“Y”,并回车 其他盘照此方法执行即可!! 图示: 除了C盘其他盘都按以上方法弄. C盘的解决方法: DOS命令输入 cd\ 进入C盘,再输入rmdir /s autorun.inf

autorun.inf是我们电脑使用中比较常见的文件之一,其作用是允许在双击磁盘时自动运行指定的某个文件。但是近几年出现了用autorun.inf文件传播木马或病毒,它通过使用者的误操作让目标程序执行,达到侵入电脑的目的,带来了很大的负面影响。 问题一:U盘一插入电脑打开就能看到一个名叫autorun.inf的文件。这是什么?为什么删除掉以后,还会出现呢? 回答:这是我们电脑使用中比较常见的文件之一,其作用是允许在双击磁盘时自动运行指定的某个文件。但是近几年出现了用autorun.inf文件传播木马或病毒,它通过使用者的误操作让目标程序执行,达到侵入电脑的目的,带来了很大的负面影响。 问题二:U盘中存在autorun.inf文件夹、RECYCLER等文件夹,请问这些又有什么作用呢?是U盘病毒将我的电脑感染了么? 回答:autorun.inf文件夹、RECYCLER文件夹等有可能是病毒建立的,也有可能是您系统中安装的安全软件为了达到免疫U盘的目的而自行创建的。 删除Autorun.inf方法 你的电脑的每个分区根目录都有一个autorun.inf的文件夹,查看属性是只读+隐藏,且无法删除、无法取得权限!点进去,却显示的是控制面板的内容? 、

windows驱动中INF文件说明

第1章建立INF文件 为了安装Microsoft Windows 2000驱动程序,必须有一个INF文件。一个INF文件是一个文本文件,包含了关于设备和要安装的文件的必要信息,如驱动程序映像、注册表信息、版本信息等等,这些都被Setup组件所使用。 Windows 2000 INF文件不包含安装脚本。安装程序是Win32安装应用程序的一部分,如新设备向导和增加/删除硬件向导,每个INF文件作为一个资源。 包括对设备的安装支持,INF文件为设备初始化一个新的设置类别,比如INF有一个ClassInstall32节。 这一章包含以下信息: ·3.1 INF文件总体指南 ·3.2 为设备文件说明源和目标位置 ·3.3 建立跨平台的和/或者双操作系统的INF文件 ·3.4 建立国际化的INF文件 ·3.5 在设备的INF文件中加强打开文件的安全性 ·3.6 从应用程序访问INF文件 参见《Windows 2000驱动程序开发参考》第1卷中的第3部分的第1章---INF文件的节和指示以获得INF文件格式的完整描述。 1.1 INF文件总体指南 INF文件有一些公共部分并遵守一套单一的语法规则,但是由于Windows支持的各种设备,它们也是有区别的。编写INF文件时,你应该求教于以下的信息资源。 ·这一章和INF文件节和指令参考资料。 ·你的设备的类别的文档。 例如,如果你的设备是图形适配器,参见DDK文档的图形驱动程序一节。 ·INF文件的DDK工具。 DDK提供了一些工具以协助编写INF文件。参见DDK的tools目录中的关于工具如GenINF 和ChkINF的信息。 ·INF示例文件和类似设备的INF文件。 DDK包括了它的示例驱动程序的INF文件。分析这些示例文件,看看是否有设备的INF文件类似于你的设备。 你可以使用任何编辑器建立或者修改INF文件。如果你的INF文件包含非ASCII字符,将文件存成Unicode文件。注意ChkINF不支持Unicode文件。 一个和Windows 2000操作系统一起发行的INF文件必须有xxxxxxxx.inf的文件名,这里xxxxxxxx不能超过8个字符。独立于操作系统发行的INF文件的名称不受8个字符的限制。 1.2 为设备文件说明源和目标位置 当Setup处理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,表示下确界。 对于函数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文件中如果出现两个同样 的节名,则系统会自动将这两个节名下面的条目合并到一起。

inf文件的制作

自动运行光盘的制作 制作AUTO-CD的关键就是如何编写自动运行信息文件Autorun.inf,它是AUTO-CD所必须的。这个文件的主要作用就是告诉Windows自动运行哪个程序和它的启动路径,并为光盘设置在资源管理器及“我的电脑”中所显示的图标。但是,如果关闭了光驱的自动插入通告功能,则只能使用Shell32.DLL(存于Windows的System目录下)中的默认光盘图标。 打开一些AUTO-CD中的Autorun.inf,你会发现它的编写格式是: [AutoRun] open=…… icon=…… [AutoRun]是针对PC机(机型为386或更高)的自动运行识别标志。除此之外,还有针对其他几种计算机系统的识别标志,它们是:针对MIPS公司MIPS系统的[AutoRun.mips];针对DEC公司Alpha系统的[AutoRun.alpha];针对苹果公司Power PC机的[AutoRun.ppc]。不过,除非你想制作通用的自动运行光盘,否则用不到这些标识。open一行是告诉操作系统要自动运行的文件名和它的启动全路径。比如,若想自动运行Autorun目录下的Run.exe文件,这一行就写成: open=Autorun\\Run.exe 注意,在目录名的左边不能有反斜线,否则计算机将按“C:\\”处理,也就无法启动指定的程序了。 icon一行是告诉操作系统该光盘以什么样的图标表示,如果你不想指定,这一行也可以不写。图标的调用方法有三种: 第一种是直接指向图标文件(.ico)。比如要想使用在Autorun目录下的一个图标文件Run.ico,调用格式与open一行相同,即: icon=Autorun\\Run.ico 第二种调用方法就是指向带有图标的exe文件,只要是For Windows 9x/NT的exe文件都带有图标。而且,如果该文件带有多个图标还可以用编号进行挑选。比如所选的是Run.exe,它带有5个图标,其第一个也是默认图标的调用格式为: icon=Autorun\\Run.exe或icon=Autorun\\Run.exe,0 若想调用第三个图标,格式为: icon=Autorun\\Run.exe,2 因为第一个图标的编号是0,所以第三个图标的编号就是2了。另外,在逗号的两边都不能有空格,否则就调用默认的图标。而且,若调用的编号大于其最大编号,那光盘的图标就为空,什么也没有。可能有人会问,我怎么知道目标文件带有几个图标?不用着急,跟着我做:用鼠标右键点击任意一个带有图标的exe文件的“快捷方式”――在快捷菜单中选择“属性”――选择“快捷方式”――点击“更改图标…”――用“浏览…”的方式打开你选择的目标文件,现在你就能看到该文件到底有多少个图标了。至于图标的排列顺序在Windows95中是从左至右,在Windows 98中则是先上下后左右,不要数错哟。 第三种调用方式就是指向带有图标的DLL文件,也就是动态链接库文件,具体的格式与注意事项都与第二种方法相同,在此就不作介绍了。 至此,一个完整的Autorun.inf文件就编辑完成了,结合你需要烧录的内容,在确认调用路径无误后,就可以开始烧录了。此时唯一要注意的就是Autorun.inf文件必须放在光盘的根目录下,否则Windows无法找到它,也就不能自动运行了。 解读Autorun.inf

计算机系统文件夹详解

C: ├—windows │ ├—【system32】32位系统文件夹(存放Windows的系统文件和硬件驱动程序,同 时一些应用程序在安装时也会将其相应的支持文件复制到这个文件夹里来,因此强烈反对删除此文件夹下文件或此文件夹的做法) │ │ ├—config(用户配置信息和密码信息) │ │ │ └—systemprofile(系统配置信息,用于恢复系统) │ │ ├—drivers(用来存放硬件驱动文件,如果删除其中的文件,会导致硬件失去驱动而无效。请勿删除) ││ ├—spool(用来存放系统打印文件。包括打印的色彩、打印预存等) │ │ ├—wbem(存放WMI测试程序,用于查看和更改公共信息模型类、实例和方法等。请勿删除) │ │ ├—IME(用来存放系统输入法文件,类似WINDOWS下的IME文件夹) │ │ ├—CatRoot(计算机启动测试信息目录,包括了计算机启动时检测的硬软件信息) │ │ ├—Com(用来存放组件服务文件,运行其的“comexp.msc”就会打开组件服务控制台。 │ │ ├—ReinstallBackups(电脑中硬件的驱动程序备份) │ │ ├—DllCache(用来存放系统缓存文件。当系统文件被替换时,文件保护机制会复制这个文件夹下的文件去覆盖非系统文件,你可以用“SFC \SCANNOW”命令格式扫描一下系统文件,然后就可以将其下的所有文件全部删除了) │ │ ├—GroupPolicy(组策略文件夹) │ │├—oobe:(用来存放系统的激活信息) │ │├—Restore:(用来存放系统还原文件。双击运行“ rstrui.exe ”文件,就会调用系统还原功能) │ │├—Setup:(用来存放系统安装文件) │ │ └—wbem:(用来存放WMI测试程序,用于查看和更改公共信息模型类、实例和方法等。属于系统重要文件,不能删除) │ ├—【system】系统文件夹(用来存放系统虚拟设备文件同,用来存放系统虚拟设备文件,这些文件从逻辑上为系统在启动时建立一套完整的虚拟设备,尤其是当你的硬件驱动还没有安装的时候) │ ├—【$NtUninstall$】(每给系统打一个补丁,系统就会自动创建这样的一个目录,可删除) │ ├—【security】系统安全文件夹(用来存放系统重要的数据文件) │ ├—【srchasst】搜索助手文件夹(用来存放系统搜索助手文件,与msagent文件夹类似) │ ├—【repair】系统修复文件夹(用来存放修复系统时所需的配置文件,第一次安装Win2000/XP时系统自动在这里保存AUTOEXEC.BAT,CONFIG.SYS等相关的系统文件。这是系统修复文件夹,用来存放修复系统时的配置文件。当系统无法进入桌面,我们在不得已的情况下,会首先选择修复系统,这个文件里所存放的就是系统的基本配置文件) │ ├—【Downloaded Program Files】下载程序文件夹(用来存放扩展IE功能的文件ActiveX。例如能让IE播放Flash动画的控件,Java虚拟机控件等等)

相关主题