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文件的结构。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值