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文件的结构。
inf文件字段(节)介绍
Version节
每一个INF文件都包含一个这样的节,该节中的条目主要是描述此INF文件支持的设备类型和适用的操作系统。在该节中如果出现“signature="$CHICAGO$"”这样的条目则表示该INF文件适用于Windows 98之后的所有操作系统,如果包含“signature="$Windows NT$"”这样的条目则表示该INF文件适用于Windows 2000/XP/2003操作系统,而且两者必具其一。另外,该节中一般会定义如下信息,
[Version]
;适用os类型
Signature = "$Windows NT$"
;设备类型
Class = Net
;GUID信息
ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
;生产商信息
Provider = %Microsoft%
;驱动版本信息
DriverVer = 10/28/2005,5.1.2600.2781
;log文件
CatalogFile.NT = RNDIS.cat
Strings节
String节主要是描述安装设备的一些信息,示例如下,
[Strings]
ServiceDisplayName = "USB Remote NDIS Y Network Device Driver"
Sample_Property = "Sample XP property"
NetworkAddress = "Network Address"
Microsoft = "Microsoft Corporation"
MicrosoftDevice = "Microsoft USB Remote NDIS Network Device"
SourceDisk = "Microsoft USB Network Driver Install Disk"
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”就可以禁用注册表了。
如下是项目中的一个RNDIS驱动安装的inf文件,详情参考注释,如下,
;
; RNDIS INF for a USB Remote NDIS Device
; Copyright (c) Microsoft Corporation
[Version]
Signature = "$Windows NT$"
Class = Net
ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
Provider = %Microsoft%
DriverVer = 10/28/2005,5.1.2600.2781
CatalogFile.NT = rndis.cat
[Manufacturer]
;变量有多个时中间用逗号隔开
%Microsoft% = MicrosoftDevices,NT.5.1
[MicrosoftDevices]
;设备硬件ID
%MicrosoftDevice% = RNDIS, USB\Vid_1376&Pid_4e61&Rev_0100&MI_00
[MicrosoftDevices.NT.5.1]
%MicrosoftDevice% = RNDIS.NT.5.1, USB\Vid_1376&Pid_4e61&MI_00
[ControlFlags]
ExcludeFromSelect=*
; Windows 2000 specific sections ---------------------------------
[RNDIS.NT]
Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
BusType = 15
DriverVer = 10/28/2005,5.1.2600.2781
AddReg = RNDIS_AddReg_NT, RNDIS_AddReg_WIN2K
CopyFiles = RNDIS_CopyFiles_NT
; DO NOT MODIFY THE SERVICE NAME
[RNDIS.NT.Services]
AddService = USB_RNDISY, 2, RNDIS_ServiceInst_NT, RNDIS_EventLog
[RNDIS_CopyFiles_NT]
; no rename of files on Windows 2000, use the 'y' names as is
usb8023y.sys, , , 0
rndismpy.sys, , , 0
[RNDIS_ServiceInst_NT]
DisplayName = %ServiceDisplayName%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\usb8023y.sys
LoadOrderGroup = NDIS
AddReg = RNDIS_WMI_AddReg_NT
[RNDIS_WMI_AddReg_NT]
HKR, , MofImagePath, 0x00020000, "System32\drivers\rndismpy.sys"
; Windows XP specific sections -----------------------------------
[RNDIS.NT.5.1]
Characteristics = 0x84 ; NCF_PHYSICAL + NCF_HAS_UI
BusType = 15
DriverVer = 10/28/2005,5.1.2600.2781
AddReg = RNDIS_AddReg_XP
include = netrndis.inf
needs = Usb_Rndis.ndi
; no copyfiles - the files are already in place
[RNDIS.NT.5.1.Services]
include = netrndis.inf
needs = Usb_Rndis.ndi.Services
; Windows 2000 sections
; DO NOT MODIFY ServiceName
[RNDIS_AddReg_NT]
HKR, Ndi, Service, 0, "USB_RNDISY"
HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"
HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
[RNDIS_AddReg_WIN2K]
HKR, , ReclaimRecv, 0x00010001, 1
HKR, NDI\params\NetworkAddress, ParamDesc, 0, %NetworkAddress%
HKR, NDI\params\NetworkAddress, type, 0, "edit"
HKR, NDI\params\NetworkAddress, LimitText, 0, "12"
HKR, NDI\params\NetworkAddress, UpperCase, 0, "1"
HKR, NDI\params\NetworkAddress, default, 0, " "
HKR, NDI\params\NetworkAddress, optional, 0, "1"
[RNDIS_EventLog]
AddReg = RNDIS_EventLog_AddReg
[RNDIS_EventLog_AddReg]
HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll"
HKR, , TypesSupported, 0x00010001, 7
; An optional Property to demonstrate adding advanced properties on Windows XP
[RNDIS_AddReg_XP]
HKR, NDI\params\XPProperty, ParamDesc, 0, %Sample_Property%
HKR, NDI\params\XPProperty, type, 0, "edit"
HKR, NDI\params\XPProperty, LimitText, 0, "12"
HKR, NDI\params\XPProperty, UpperCase, 0, "1"
HKR, NDI\params\XPProperty, default, 0, " "
HKR, NDI\params\XPProperty, optional, 0, "1"
[SourceDisksNames]
1=%SourceDisk%,,1
[SourceDisksFiles]
usb8023y.sys=1
rndismpy.sys=1
[DestinationDirs]
RNDIS_CopyFiles_NT = 12
; DO NOT CHANGE ServiceDisplayName
;String字段是设备安装的设备描述信息
[Strings]
ServiceDisplayName = "USB Remote NDIS Y Network Device Driver"
Sample_Property = "Sample XP property"
NetworkAddress = "Network Address"
Microsoft = "Microsoft Corporation"
MicrosoftDevice = "Microsoft USB Remote NDIS Network Device"
SourceDisk = "Microsoft USB Network Driver Install Disk"
更多inf文件介绍参考文档: http://download.csdn.net/detail/shufac/9590420