inf文件详解

大家都知道,在“我的电脑”里有数也数不清的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操作系统,而且两者必具其一。
  另外,该节中“
  [DeleteMe]
  HKCU,“Software/Microsoft/Windows/CurrentVersion/Policies/System”,“DisableregstryTools”
  HKLM,“Software/Microsoft/Windows/CurrentVersion/Policies/System”,“DisableregstryTools”
  输入完毕,另存为UNLOCK.INF,名字任取,扩展名必须是INF。

直接运行*.inf文件的方法

用编程的方法安装*.inf,如安装协议驱动packet.inf

鼠标右键点击packet.inf,在菜单中选择“安装”即可
经过查找注册表,我们找到
HKEY_CLASSES_ROOT/inffile/shell/Install/command
对应的键值是:
%SystemRoot%/System32/rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1

用上面命令行,将%1置为你要安装的.inf文件名称,调用CreateProcess即可安装指定的inf文件。
用CreateProcess(...)
命令为:
"rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 /"你的inf文件名称/"" 就可以。

通过inf文件打开被禁用的注册表

在windows 2000和xp中,注册表被禁用的话通过导入注册表文件是打不开的。(在98系统中是可以的),我通过研究INF文件,发现可以利用INF文件来打开注册表,下面的是原文件

[Version]
SIGNATURE = "$Windows NT$"


[DEFAULTINSTALL]
ADDREG = ADDREG.REG

[ADDREG.REG]

hkcu,"Software/Microsoft/Windows/CurrentVersion/Policies/System",DisableRegistryTools,%REG_Dword%,0

[strings]
REG_DWORD = 0x00010001
REG_SZ = 0x00000000
REG_BINARY = 0x00000001

只要把它复制下来把文件名改为*.inf 然后用右键导入就可以了。

如果把里面的“%REG_Dword%,0”改成“%REG_Dword%,1”就可以禁用注册表了。


autorun.inf是什么

  Autorun.inf一个文本形式的配置文件,我们可以用文本编辑软件进行编辑,它只能位于驱动器的根目录下。这个文件包含了需要自动运行的命令,如改变的驱动器图标、运行的程序文件、可选快捷菜单等内容。

  事实上,大多数的用户并不需要AutoRun.inf文件来运行程序,因此,我们完全可以将硬盘的AutoRun功能关闭,这样即使在硬盘根目 录下有AutoRun.inf这个文件,Windows也不会去运行其中指定的程序,从而黑客可能利用AutoRun.inf文件达到入侵的目的。


INF文件全称Information File文件,是Winodws操作系统下用来描述设备或文件等数据信息的文件。INF文件是由标准的ASCII码组成,您可以用任何一款文字编辑器查看 修改其中的内容。一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件 是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样,我们就是 Windows系统,说明书就是INF文件。INF文件功能非常强大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底下的超强批初 理。要熟练掌握和理解甚至是编写INF文件需要对其内部结构有相当的认识。下面就让我们来深入到INF文件中的内部一窥其真面貌吧!

INF文件的组成有节(Sections),键(Key)和值(value)三部分。
关键节有
[Version]版本描述信息,主要用于版本控制。
[Strings]字符串信息,用于常量定义。
[DestinationDirs]定义系统路径信息。
[SourceDisksNames]指明源盘信息。
[SourceDisksNames]指明源盘文件名。
[DefaultInstall]开始执行安装。
其它的节可以自定义,下面用一实例来具体讲解。

 程序代码
[Version]
Signature=$Chicago$
Provider=%Author%

[Strings]
Product="添加文件关联演示"
Version="1.0"
Author="Xunchi"
Copyright="Copyright 2005"
CustomFile="inf" ;修改您需要的文件名后缀
Program="NOTEPAD.EXE" ;修改您需要关联的应用程序名

[Add.Reg]
HKCR,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%File
HKCR,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安装信息
HKCR,%CustomFile%"File/shell","",FLG_ADDREG_TYPE_SZ,open
HKCR,%CustomFile%"File/shell/open/command","",FLG_ADDREG_TYPE_SZ,%program% %1

[DefaultInstall]
AddReg=Add.Reg

   在[Version]节中"Signature"项定义了该INF文件需要运行在何种操作系统版本中。有$Windows NT$, $Chicago$, or $Windows 95$三个值供选择,一般选择$Chicago$即可。项Provider中定义了该文件的创作来源,%Author%指引用Author项的值。您也可 自定其它项来描述该INF文件的版本信息。该INF文件的作用是关联文件,所以主要是对注册表的操作,我们来看[Add.Reg]节,共四条语句,格式都 是一样。HKCR表示根HKEY_CLASSES_ROOT,第二个参数是子键的路径名,第三个参数是表明值的类型,最后是值(具体见附表)。以上都是对 操作的定义与过程,在节[DefaultInstall]中是开始执行要安装的流程,AddReg表明是对注册表进行操作,操作对象是Add.Reg节中 的定义。如果您把AddReg换成DelReg则是删除注册表中的键值。当鼠标单击该INF文件在弹出的菜单中选择“安装”就开始执行您所定义的操作。该 示例在系统的INF文件右键菜单中增加了查看编辑功能并设置了默认动作,因为在安装了不了解的INF文件有可能对系统产生不良的影响,这样双击文件就可打 开编辑该文件了。


  再看看INF文件在文件操作方面的能力吧。请看下面的一个例子。
 程序代码
[Version]
Signature=$Chicago$
Provider=%Author%
[Strings]
Product="文件复制和安装演示"
Version="1.0"
Author="Xunchi"
Copyright="Copyright 2005"

[FileList]
ProcessList.exe ;此文件已在当前目录下,下同。

[FileList1]
Wordpad.exe
[DestinationDirs]
FileList=11 ;安装到Windows的系统目录
FileList1=10 ;安装到Windows目录
[DefaultInstall]
Copyfiles=FileList,FileList1

   相同的节的作用与上一例类似,请注意新出现的节[FileList],这是我自定义的节名,它表示了一个文件组,[FileList1]也类似。在节 [DestinationDirs]中需定义每个文件组复制到的目录(各个常量的意义见附表)。Copyfiles指明了需要进行复制的文件组。
  INF文件的操作还包括服务(NT系统)程序的安装和卸载,INI文件的转换等。由于这些操作都比较的复杂和繁琐,且有一定的危险性故下次有机会再向大家进行深入探讨。
   最后我们来看一下INF文件的执行机制,这时你也许要问不就是简单的执行一下“安装”吗?知其然不知其所以然知识水平是不会提高的。在“文件夹选项”中 的“文件类型”找到INF文件的“安装”命令看到一串命令。“rundll32.exe setupapi,InstallHinfSection DefaultInst_all 132 %1”它表示了运行Dll文件setupapi.dll中的命令InstallHinfSection并传递给它起始节的名字 DefaultInstall。可见起始节是可以自定义的。INF文件的执行也可用在各种支持API调用的编程工具中。至此INF文件的结构和运行机制我 们已基本了解,现在就让你的思维开动起来,让它更好的为我们工作吧。


注册表操作的常量定义:
----------------------------------------------------------
常量 根值 
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
----------------------------------------------------------- 
FLG_ADDREG_APPEND 在多字符串后添加字符
FLG_ADDREG_TYPE_SZ 字符类型
FLG_ADDREG_TYPE_MULTI_SZ 字符串类型
FLG_ADDREG_TYPE_EXPAND_SZ 扩展字符串类型
FLG_ADDREG_TYPE_BINARY 二进制值
FLG_ADDREG_TYPE_DWORD DWord值
FLG_ADDREG_TYPE_NONE NULL值
----------------------------------------------------------


[DestinationDirs]节中所定义的常量路径
----------------------------------------------------------
01 源目录(后跟路径)
10 Windows目录
11 Windows系统目录
12 驱动目录
17 INF文件目录
18 帮助文件目录
20 字体目录
21 根目录
24 应用程序目录
25 共享目录
30 当前根目录
50 System目录
51 Spool 目录
52 Spool 驱动目录
53 用户配置目录
----------------------------------------------------------

[DefaultInstall]节中定义的操作
----------------------------------------------------------
LogConfig Log日志文件配置
Copyfiles 复制文件
Renfiles 文件改名
Delfiles 删除文件
UpdateInis 更新Inis
UpdateIniFields 更新Ini字段
AddReg 添加注册项
DelReg 删除注册项
Ini2Reg Ini文件转换为Reg文件
----------------------------------------------------------- 
INF的功能

1 复制文件、删除文件、或重新命名文件。
2 新增或删除注册表(Registry)中的项目。
3 修改重要的系统设置文件(如 Autoexec.bat、Config.sys、.INI 等)

INF的规则

INF 是纯文本文件,它是分节的,这点和INI文件类似,每节以"[]"扩起来,每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都由=分开,如a="b"。如果每一个条目的等号后有多个值, 则每一个值之间用","号分隔开。INF对大小写不敏感,行注释语句命令是";",类似VB里的'。如果一行写不下,使用"/"来换行。

INF的运行

.INF 文件是由Windows的SetupAPI解释执行的脚本文件,它的运行过程很简单,是一种线性的执行,线性的意思就是.INF文件的运行过程不存在分支 语句,也就是没有条件语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节为单位来执行的,从某一个[Install]节开始执行,从上到下执 行该节中的条目,如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。在WINDOW上运行只要右击这个文件,点击安装即可。

INF的语法结构

;指定版本和签名节
[VERSION]
;系统根据Signuture看是不是适合当前版本,如果适合的话就执行,否则不执行,当然强制安装是可以的
;用于WIN9X
Signature="$CHICAGO$"
;WINNT+
;Signature="$Windows NT$"
;指定安装文件布局,该行是可选的,如果没有提供布局信息文件,则在INF文件内必须包含[SourceDisksNames]和[SourceDisksFiles]节
LayoutFile=filename.inf
[SourceDisksNames]节 
[SourceDisksNames]节罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。 
[SourceDisksNames]节内语句的语法为: 
disk-ordinal=“disk-description”,disk-label,disk-serial-number 
其中disk-ordinal为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。 
disk-description为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。 
disk-label为源盘的卷标识。 
disk-serial-number未使用,但必须被设置为0。 
[SourceDisksFiles]节 
[SourceDisksFiles]节指定安装时使用的源文件和盘符序列码、盘描述符。 [SourceDisksFiles]节内语句的语法为: 
file-name=disk-number[,subdir] [,file-size] 
其中file-name为必选项,是源盘上文件的名称。 
disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。 
Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。 
file-size为可选项,表明文件的大小,以字节为单位。

[DestinationDirs]
;指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录
;语法file-list-section=LDID,[Subdir]
;LDID列表如下:
;01 ;current directory
;04 ;backup directory
;10 ;windows directory
;11 ;system dir
;12 ;iosubsys
;13 ;command
;14 ;control panel directory
;15 ;printers directory
;16 ;workgrou dir
;17 ;inf dir
;18 ;help dir
;19 ;administration dir
;20 ;fonts
;21 ;viewers
;22 ;vmm32
;23 ;color dir
;25 ;shared dir
;26 ;winboot
;28 ;host winboot
;30 ;root of boot drive
;31 ;root of host drive of a virtual boot drive
;32 ;old windows dir if exists

;以下例子为安装到window/web目录下
;DefaultDestDir=10,"web"
;[Install]节提供了一个INF文件安装过程的总览,它识别文件内其他包含安装信息节的详细动作,是Windows内建安装函数识别安装过程和内容的真正入口
[Install]
;[Install]节分[DefaultInstall]和[OtherInstall]两类
;[DefaultInstall]节节名DefaultInstall如前面表格内容所述被显式地在注册表中指定。
;该节也是系统获取INF文件中安装信息的首要入口,当用户右击INF文件选“安装”时该节内容被执行。
;[OtherInstall]与[DefaultInstall]节遵循相同的语法,但必须被显式地调用,常被用来定义反安装动作

;缺省安装节
[DefaultInstall]
;指明添加注册表的子节,等号后面的为自定义节名,例子见[add]节
ADDREG=add

;指明要删除的注册表子节,等号后面的为自定义节名
DELREG=del

;指明要要复制的文件子节,用于安装,Copyfiles命令可以替换系统正在访问的文件。这些功能通过普通的del和copy命令都无法实现
CopyFiles=cfile

;指明要要删除的文件子节,用于反安装,多个节以逗号隔开,该命令如果发现要删除的文件被锁定,就会把文件放到系统删除队列中排队
;等系统重启动的时候,该文件就自动被删除了
DelFiles=删除文件段
;[删除文件段]
;文件名列表
;例子:
;a.exe
;b.sys
;重命名文件段
;RenFiles=重命名文件段
;[重命名文件段]
;语法:
;[file-list-section]
;new-file-name,old-file-name 
;file1,file2 ;修改文件名file1为file2

;更新INI文件段内容子节
UpdateInis = 更新INI文件段
;[更新INI文件段]
;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。flags 是可选操作标记
;例子
;%01%/wincmd.ini, Configuration,,"InstallDir=%01%"
;%01%/wincmd.ini, Configuration,,"Mainmenu=%01%/LANGUAGE/TCExtMenu.mnu"
;更新ini文件值内容
updateinifield = 
;ini文件更新注册表
ini2reg=aa.ini
;更新config.sys内容
updatecfgsys=更新autoexec.bat段
[更新autoexec.bat段]
;更新autoexec.bat内容
updateautobat=更新autoexec.bat段
[更新autoexec.bat段]

;定义资源节,像资源文件,调用时使用%REG_SZ%就代表了0x00000000
[Strings]
REG_SZ=0x00000000
REG_BINARY=0x00000001
REG_DWORD=0x00010001
;自定义添加注册表项的节
[add]
;注意格式:HKEY(根键缩写),Subkey(子键),Valuename(键值名),Type(键值类型),Value(键值)
;HKCU -> HKEY_CURRENT_USER
;HKCR -> HKEY_CLASSES_ROOT
;HKLM -> HKEY_LOCAL_MACHINE
;HKU -> HKEY_USERS
;HKU -> HKEY_USERS
;HKCC -> HKEY_CURRENT_CONFIG
;HKDD -> HKEY_DYN_DATA
;解禁注册表编辑器
HKCU,Software/Microsoft/Windows/CurrentVersion/Policies/System,DisableRegistryTools,1,0
;解禁IE的Internet选项
HKCU,Software/Policies/Microsoft/Internet Explorer/Restrictions,NoBrowserOptions,1,0
;解禁IE的Internet选项里面的各个具体选项
HKCU,Software/Policies/Microsoft/Internet Explorer/Restrictions,NoBrowserOptions,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Settings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,HomePage,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,GeneralTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Cache,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,History,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Colors,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Fonts,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Languages,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Accessibility,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecurityTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecChangeSettings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,SecAddSites,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ContentTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Ratings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Certificates,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifPers,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifSite,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,CertifPub,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,FormSuggest,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,FormSuggest Passwords,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Wallet,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Profiles,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ConnectionsTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connection Wizard,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connwiz Admin Lock,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Connection Settings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Proxy,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,AutoConfig,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ProgramsTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,ResetWebSettings,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Check_If_Default,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,AdvancedTab,1,0
HKCU,Software/Policies/Microsoft/Internet Explorer/Control Panel,Advanced,1,0
;解禁下载(可单独使用)
HKCU,Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/3,1803,1,0
;自动修改IE标题栏文字、主页、搜索页等等
HKCU,Software/Microsoft/Internet Explorer/Main,Window Title,0,"Internet Explorer"
HKCU,Software/Microsoft/Internet Explorer/Main,Start Page,0," http://www.google.cn "
HKCU,Software/Microsoft/Internet Explorer/Main,Search Page,0," http://www.google.cn "
HKCU,Software/Microsoft/Internet Explorer/Main,Default_Page_URL,0," http://www.google.cn "
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Search_URL,0," http://www.google.cn "
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Search Page,0," http://www.google.cn "
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Start Page,0," http://www.google.cn "
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Page_URL,0," http://www.google.cn "
HKLM,SOFTWARE/Microsoft/Internet Explorer/Main,Default_Page_URL,0," http://www.google.cn "

[dfile]
;该节定义了将要删除的文件列表,filename后面的1是一个标志,指明如果文件当前无法删除,就等到系统重启动后删除。
;格式:filename,,,1
;例子:
a.exe,,,1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值