手工编写如何删除注册表文件件第一行内容必须是什么

当前位置: >>
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/rundll32 setupx.dll/SetupAPI.DLL,InstallHinfSection section reboot-mode inf-name 其中,rundll/rundll32 程序以命令行的形式调用 Windows 的动态链接库,其命令格式为: rundll.exe/rundll32.exe &DLL 文件名&,&入口点&,&调用参数& 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.exesetupapi,InstallHinfSection DefaultInstall 132 %1说明:rundll 及 Setupx.dll 在 win9x 系列的操作系统使用。在以后的讲解中不再区分这些。。。 这是因为微软公司已在其操作系统 Windows 中内置提供了 Setup API (可以解释.INF 脚本文件 setupx.dll/SetupAPI.DLL, setupx.dll/SetupAPI.DLL 是安装 API(Setup API)函数库, 包含了 InstallHinfSection、SetupGetInfSections、 SetupInstallFromInfSection、 SetupPromptForDisk 、SetupDiCreateDevRegKey 等 INF 文件内部语法检查、节名搜索、注册 键创建等功能函数。),我们只需用文本编辑软件编写 .INF 文件,便可完成大部份的安装 工作,所以尤其是在软体的大小并不是很大的情况下,安装工作不是很复杂的时候,使 用 .INF 文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序, .INF 文件 是目前唯一的选择。 可以用 .INF 文件创建包括注册表条目和目的目录的自定义软件安装指 令。 .INF 文件可以提供有限的平台独立性,并指定有限的软件依赖性。目前 .INF 文件最普 遍的应用是为安装硬件设备的驱动程序服务的,本文的目的就是介绍 .INF 文件的功能、结 构、并提供了几个事例来说明如何用 .INF 文件,如何扩展 .INF 文件的用途,比如制作绿色 软件,仅供参考。 驱动层次模型:I/O 管理器文件驱动 中间层驱动 设备驱动硬件抽象层下面首先给出一个驱动程序的 .INF 文件的例子,华尔特 F18 型摄像头驱动 (本人滴), 是我从摄像头驱动安装程序中抽取出来的用于 WinXP 的系统安装的 usbvm31b.INF 文件, 删 除了大部分内容,紧紧保留了一个基本的 .INF 文件的框架。 安装 INF 文件通常情况下,硬件厂商已经将驱动程序打包为一个安装程序或自解压程序,我们只需 直接执行 Setup.exe 或 XXX.exe 即可,不过笔者建议还是安装 .INF 文件为好,这样不会同 时安装一些无用的垃圾文件。第一步:解压缩驱动程序如果下载回来的驱动程序是一个 ZIP 格式的压缩包, 首先将其解压缩;如果下载回来的 驱动程序是一个 EXE 格式的自解压文件,请使用 WinRAR 或 WinZIP 释放到一个临时文件 夹中,然后查找到其中的 .INF 文件。第二步:安装 INF在“ 我的电脑” 或“ 资源管理器 ” 中右击刚才找到的 .INF 文件,执行 “ 安装” 命令就可以了。 这是因为微软在 Windows 中提供了 Setup API , 驱动程序开发人员不需要考虑接口、安装等 事情。.INF 文件的格式usbvm31b.INF 中,可以看到.INF 文件是由许多节( Section)组成,与 .INI 文件类似, 整个 .INF 文件由几个节组成,节名用方括号扩起来,如[version] 节,[Manufacturer] 节,和 [Strings] 节等等。而每个节又由一系列的条目组成,每个条目都是是由一个键(Key)与一 个值(Value)组成,都是“ Key=Value” 这样的形式,在这些节中定义的项目可以完成硬件的 自动检测和软件(包括驱动程序)的安装。.INF 文件中分号后面的字符串是注释。在一 个 .INF 文件中,所有跟随在分号( ;)后的文字都会被视为注释。注释并不一定要在新行开 始,可以在一行文字后面加入注释。节的名称 [Version] [DefaultInstall] [OtherInstall] [DestinationDirs]节的作用 INF 文件头,提供有效 INF 文件的版本信息 包含安装所关联动作(文件拷贝或删除,注册表键值的更新、子键增删等),在 INF 文件内的节名指针,默认情况下首先执行该节内容 与[DefaultInstall]节遵循相同的语法,但必须被显示地调用,常被用来定义反安装 动作 指定罗列于一个节内将被拷贝、删除或重命名的文件在盘上的位置[FileCopy/Delete/RenameSection(s)] 罗列被拷贝、删除或重命名的文件 [RegistryUpDate RenameSection(s)] 罗列对注册表键值的更新、子键增删等动作 [IniFileUpDateRenameSection(s) ] [SourceDisksNames] [SourceDisksFiles] [Strings]指定对 ini 文件的更新,快捷方式可通过该节进行创建 罗列文件所在盘的盘名、盘卷标、盘序列号 罗列安装时使用的源文件极其所在盘 罗列本地化字符串(或称宏字符串)说明:表中黑体节名是保留关键字,名称固定,大小写不敏感,斜体节名名称任意,由 INF 文件编写者确定。每节的标题字符均用括号([])括起。限于篇幅本文只对黑体节名做进一步 的解释, 斜体节名将根据情况而定。黑体和斜体仅用于本表,在以后的内容中不做区分。.INF 文件的语法是统一的分节语法,随着操作系统的更新,微软逐渐增加了一些必要 的关键字, 但是整个的 .INF 文件的结构不会变化。 从语法上来说, .INF 文件都是一个类别。按照 .INF 文件的版本来分类,可以分为 2 类: 1 AdvancedINF,在[Version]节中有 “ AdvancedINF=2.5 ,&您需要新版本的 AdvPack.dll& ” 或 者是 “ AdvancedINF=2.5,&You need a newer version of AdvPack.DLL!& ” 这么一行语句,表 明此 .INF 文件需要 AdvPack.dll 这个动态链接库来解释执行,AdvancedINF 有一些高级特 性,但是在目前用的不太多。 2 普通 INF, 没有指明需要 AdvPack.dll 的.INF 文件, 使用 SetupAPI.DLL 来解释执行 (win9x 系列的操作系统使用 Setupx.dll),系统中缺省使用的就是这种普通 INF。.INF 文件的功能从前面的介绍,能够看出使用 .INF 文件可以完成如下功能: 1 复制文件、删除文件、或重新命名文件。 2 新增或删除注册表(Registry)中的项目。 3 修改重要的系统设置文件(如 Autoexec.bat 、Config.sys 、 .INF 等)。.INF 文件的生成方法可以直接手工用一个纯文本的编辑器书写 .INF 文件,当相对应的 .REG 文件非常庞大, 条目比较多时候, 可以用小工具 reg2inf.exe 来自动的把 .REG 文件转换为 .INF 文件,然后再 进行相应的路径修改,把绝对路径替换为用逻辑磁盘标识符 ( LDID) 来表示的路径。 如果涉及到文件操作的时候,只好手工写了,目前还没有自动化的工具。 .INF 文件的好处是,不像 vbs 那么强大,甚至有可能由危险的格式化代码。.INF 的限 制很强,这样比其他的脚本文件安全,当然相对的功能就弱,但是也足够了。.INF 文件格式和作用如下所示:;示例 01 寒夜孤星 usbvm31b.inf 【华尔特 F18 型摄像头驱动】 ;Installation File (.inf) for USB PC Czxy add coinstaller
[Version] Signature=&$CHICAGO$& LayoutFile=Layout.inf, Layout1.inf, Layout2.inf Class=Image ClassGUID={6bdd1fc6-810f-11d0-bec7- 0f} Provider=%SoftMfg% DriverVer=11/26/.1126.72 CatalogFile=usbvm31b.cat [ControlFlags] ExcludeFromSelect=* [Manufacturer] %HwMfg%=VM,NT [DestinationDirs] DefaultDestDir=11 VM.APP.CopyFiles = 10 VM.XPAPP.CopyFiles = 10 VM.STI.CopyFiles = 11 VM.CustomPrp.CopyFiles = 11 VM.TWAIN.CopyFiles = 10, twain_32\VM301b VM.XPTWAIN.CopyFiles = 10, twain_32\VM301b VM.USBDCam.Files.Ext = 10, System32\Drivers VM.Config.CopyFiles = 10, inf CoInstallers.CopyFiles= 11 [VM] %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302,USB\VID_0AC8&PID_301B %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302,USB\VID_0AC8&PID_305B [VM.NT] %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302.XP,USB\VID_0AC8&PID_30 1B %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302.XP,USB\VID_0AC8&PID_30 5B ;**************************************** [VM.USBDCam302] Include=ks.inf, kscaptur.inf, ksfilter.inf, Config.set Needs=KS.Registration,KSCAPTUR.Registration, VM.HWConfig SubClass=StillImage DeviceType=2 DeviceSubType=0x0302 Capabilities=1 Events=VM.STI.Events DeviceData=VM.STI.DeviceData ICMProfiles=&sRGB Color Space Profile.icm& AddReg=VM.USBDCam.AddReg, VM.TWAIN.AddReg CopyFiles=VM.USBDCam.Files.Ext, VM.CustomPrp.CopyFiles, VM.STI.CopyFiles, VM.APP.CopyFiles, VM.TWAIN.CopyFiles, VM.Config.CopyFiles [VM.USBDCam302.NT] Include=ks.inf, kscaptur.inf, ksfilter.inf, Config.set Needs=KS.Registration,KSCAPTUR.Registration.NT, VM.HWConfig SubClass=StillImage DeviceType=2 DeviceSubType=0x0302 Capabilities=1 Events=VM.STI.Events DeviceData=VM.STI.DeviceData ICMProfiles=&sRGB Color Space Profile.icm& AddReg=VM.USBDCam.AddReg, VM.CustomPrp.AddReg, VM.STI.AddReg, VM.TWAIN.AddReg CopyFiles=VM.USBDCam.Files.Ext, VM.CustomPrp.CopyFiles, VM.STI.CopyFiles, VM.APP.CopyFiles, VM.TWAIN.CopyFiles, VM.Config.CopyFiles [VM.USBDCam302.XP] Include=ks.inf, kscaptur.inf, Config.set Needs=KS.Registration,KSCAPTUR.Registration.NT, VM.HWConfig AddReg=VM.USBDCam.AddReg, VM.WIA.AddReg, VM.TWAIN.AddReg CopyFiles=VM.USBDCam.Files.Ext, SubClass=StillImage DeviceType=3 DeviceSubType=0x0302 Capabilities=0x ;Capabilities=0x PortSelect=NEvents=VM.STI.Events DeviceData=VM.WIA.DeviceData VM.CustomPrp.CopyFiles, VM.STI.CopyFiles, VM.XPAPP.CopyFiles, VM.XPTWAIN.CopyFiles, VM.Config.CopyFiles VM.CustomPrp.AddReg, VM.CustomPrp.AddReg, VM.STI.AddReg, ICMProfiles=&sRGB Color Space Profile.icm& ;LogConfig = VM.XP.NEEDDREBOOT ;R********************************************** [VM.USBDCam302.XP.CoInstallers] CopyFiles=CoInstallers.CopyFiles AddReg=CoInstallers.AddR********************************************** [CoInstallers.AddReg] HKR,,CoInstallers32,0x,&RunSetup.dll, CoRunExecuteFile& [CoInstallers.CopyFiles] RunSetup.dll,,,0x10 ;**************************************************** [VM.USBDCam.AddReg] HKR,,HardwareConfig,1,1 HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbVM31b.HKR,,PageOutWhenUnopened,3,00 ;HKR,,PowerDownWhenUnopened,3,00 [VM.CustomPrp.AddReg] HKCR,CLSID\%GUID_VMCustomPropertySets%,,,%VMCustomPropertySets% HKCR,CLSID\%GUID_VMCustomPropertySets%\InprocServer32,,,VM31bPrp.Ax HKCR,CLSID\%GUID_VMCustomPropertySets%\InprocServer32,ThreadingModel,,Both HKLM,System\ CurrentControlSet\Control\MediaInterfaces\%GUID_VMCustomPropertySets %,,,%VMCustomPropertySets% HKLM,System\ CurrentControlSet\Control\MediaInterfaces\%GUID_VMCustomPropertySets %,IID,1,5A,7C,75,9C,95,8D,3c,45,82,84,90,6A,68,DC,53,FA HKCR,CLSID\%CLSID_VMCustomPropertyPage%,,,%VMCustomPropertyPage% HKCR,CLSID\%CLSID_VMCustomPropertyPage%\InprocServer32,,,VM31bPrp.Ax HKCR,CLSID\%CLSID_VMCustomPropertyPage%\InprocServer32,ThreadingModel,,Both HKCR,CLSID\%CLSID_VMBackDoorPropertyPage%,,,%VMBackDoorPropertyPage% HKCR,CLSID\%CLSID_VMBackDoorPropertyPage%\InprocServer32,,,VM31bPrp.Ax HKCR,CLSID\%CLSID_VMBackDoorPropertyPage%\InprocServer32,ThreadingModel,,Both HKLM,System\ CurrentControlSet\Control\MediaSets\%GUID_VMCustomPropertySets%\Pr opertyPages\%CLSID_VMCustomPropertyPage%,,,%VMCustomPropertyPage% ;Add or remove backdoor from the registry: ;HKLM,System\CurrentControlSet\Control\MediaSets\%GUID_VMCustomPropertySets%\Pr opertyPages\%CLSID_VMBackDoorPropertyPage%,,,%VMBackDoorPropertyPage% [VM.STI.AddReg] HKR,,USDClass,,&{80989FCE-A58A--F}& HKCR,CLSID\{80989FCE-A58A--F} ,,,%STI_DEVICE_NAME% HKCR,CLSID\{80989FCE-A58A--F}\InProcServer32,,,%11%\VM3 1bSTI.dll HKCR,CLSID\{80989FCE-A58A--F}\InProcServer32,ThreadingMo del,,&Both& HKLM,&SOFTWARE\Microsoft\Windows\CurrentVersion\StillImage\Registered Applications&,%VIDEOAPP%,,&%10%\amcap.exe /StiDevice:%1 /StiEvent:%2& HKLM,&SOFTWARE\Microsoft\Windows\CurrentVersion\StillImage\Registered Applications&,%STILLAPP%,,&%10%\StillCap.exe /StiDevice:%1 /StiEvent:%2& [VM.WIA.AddReg] HKR,,USDClass,,&{-88c2-11d2-82c7-00c04f8ec183}& HKLM,&SOFTWARE\Microsoft\Windows\CurrentVersion\Run&,&BigDogPath&,,&%10%\VM_ST I.EXE %USB\VID_0AC8&PID_0302.DeviceDesc%& HKLM,&Software\ZSMC\USBCAMERA\ BigDogPath&,Snapshot1,,&%10%\amcap.exe& HKLM,&Software\ZSMC\USBCAMERA\ BigDogPath&,Snapshot2,,&%10%\VMCap.exe& [VM.STI.DeviceData] TwainDS=%USB\VID_0AC8&PID_0302.TWAINDSName% SpecialInfo=&VM& [VM.WIA.DeviceData] Server=local UI DLL=sti.dll UI Class ID={5d8ef5a3-ac13-11d2-a093- 00c04f72dc3c} TwainDS=%USB\VID_0AC8&PID_0302.TWAINDSName% SpecialInfo=&VM& [VM.STI.Events] ; These are events that the device issues to
launching. Snapshot=%SNAPSHOT%,{E76F3027-CA52-468e-B06E-2F32E2F6B59E},* Snapshot2=%SNAPSHOT2%,{E76F3028-CA52- 468e-B06E-2F32E2F6B59E},%STILLAPP% [VM.TWAIN.AddReg] HKLM,%TWAINSetting%,DeviceName,,%USB\VID_0AC8&PID_0302.DeviceDesc% HKLM,%TWAINSetting%,DSName,,%USB\VID_0AC8&PID_0302.TWAINDSName% HKLM,%TWAINSetting%,OEM,,%USB\VID_0AC8&PID_0302.TWAINOEMPath% [VM.XP.NEEDDREBOOT] ;ConfigPriority = REBOOT ;**************************************************** [VM.USBDCam302.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,VM.USBDCam302.Interface [VM.USBDCam302.NT.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,VM.USBDCam302.Interface [VM.USBDCam302.XP.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,VM.USBDCam302.Interface [VM.USBDCam302.Interface] AddReg=VM.USBDCam302.Intf.AddReg [VM.USBDCam302.Intf.AddReg] HKR,,CLSID,,%ProxyVCap.CLSID% HKR,,FriendlyName,,%USB\VID_0AC8&PID_0302.DeviceDesc% HKR,PageAliases,&{71F-11d0-A18C-00A0C9118956}&,1,51,7C,75,9C, 3C,45, 0x82, 0x84, 0x90, 0x6A, 0x68, 0xDC, 0x53, 0xFA HKR,PinFactory\1\Interfaces\%GUID_VMCustomPropertySets%,,, HKR,,ExtensionDLL,,%VM.ExtensionDLL% [VM.USBDCam302.NT.Services] AddService = ZSMC302,0x,VM.USBDCam302.ServiceInstall [VM.USBDCam302.XP.Services] AddService = ZSMC302,0x,VM.USBDCam302.ServiceInstall [VM.USBDCam302.ServiceInstall] DisplayName = %USB\ VID_0AC8&PID_0302.DeviceDesc% ServiceType = %SERVICE_KERNEL_DRIVER% StartType = %SERVICE_DEMAND_START% ErrorControl = %SERVICE_ERROR_NORMAL% ServiceBinary = %10%\System32\Drivers\ usbVM31b.****************************************************** [VM.USBDCam.Files.Ext] usbVM31b.sys [VM.CustomPrp.CopyFiles] VM31bPrp.Ax [VM.APP.CopyFiles] amcap.exe StillCap.exe [VM.XPAPP.CopyFiles] amcap.exe VM_STI.EXE,,,COPYFLG_FORCE_FILE_IN_USE VMCap.exe [VM.STI.CopyFiles] VM31bSTI.dll [VM.TWAIN.CopyFiles] VM31bTWN.DS [VM.XPTWAIN.CopyFiles] VM31bTXP.DS [VM.Config.CopyFiles] config.set [SourceDisksNames] 1 = %SRCDISKNAME%,,, [SourceDisksFiles] usbVM31b.sys = 1 95,8D, VM31bPrp.Ax = 1 VM31bSTI.dll = 1 VM31bTWN.DS = 1 VM31bTXP.DS = 1 amcap.exe = 1 StillCap.exe = 1 VMCap.exe = 1 VM_STI.EXE = 1 config.set = 1 RunSetup.dll=1 [Strings] ;---------------; Non-L---------------ProxyVCap.CLSID=&{17CCA71B-ECD7-11D0-B908-00A0C9223196}& KSCATEGORY_CAPTURE=&{65E-11D0-A3B9-00A0C9223196}& SERVICE_KERNEL_DRIVER=1 SERVICE_DEMAND_START=3 SERVICE_ERROR_NORMAL=1 VM.ExtensionDLL = &VM31bPrp.Ax& ;---------------; L---------------SRCDISKNAME = &USB PC CAMERA DISK& SoftMfg=&VM& HwMfg=&VM& USB\VID_0AC8&PID_0302.DeviceDesc = &VIMICRO USB PC Camera& VMCustomPropertySets=&VM Custom Property Sets& VMCustomPropertyPage=&VM Custom Property Page& VMBackDoorPropertyPage=&VM Back Door Property Page&TWAINSetting = &Software\ZSMC\USBCAMERA\ZC0301\ TWAIN& USB\VID_0AC8&PID_0302.TWAINDSName = &VIMICRO USB PC Camera& USB\VID_0AC8&PID_0302.TWAINOEMPath = &VM301b& GUID_VMCustomPropertySets=&{9C757C5A-8D95-453c-DC53FA}& CLSID_VMCustomPropertyPage=&{9C757C51-8D95 -453c- DC53FA}& CLSID_VMBackDoorPropertyPage=&{9C757C52-8D95-453c-DC53FA}& SNAPSHOT = &Startup Camera& SNAPSHOT2 = &Capture Image& VIDEOAPP = &MS Video Capture Application& STILLAPP = &VM Still Capture Application& STI_DEVICE_NAME = &VM STI USB& ㈠、 [Version] 节:包含对此 .INF 文件的简短描述与此 .INF 文件支持的设备类型的信息。 用于确认 .INF 文件的基本版本信息。任何.INF 文件都必须包括这个节。 在示例 01 中, [Version] 节中的语句 Signature=&$CHICAGO$&表明这个 .INF 文件可以 用于 windows 95 以后的所有平台上,目前来说就是 win98,winme ,winnt4 ,win2k,winxp, win2k3 。这种 .INF 文件比较多见。如果[Version]节中的签名条目是 Signature=&$Windows 95$&, 表明这个 .INF 文件可以用于 windows 95 以后的 Win9x 平台上, 目前来说就是 win98, winme 。如果 [Version]节中的签名条目是 Signature=&$WINDOWS NT$& ,表明这个 .INF 文 件可以用于 WindowsNT 系列的平台上,包括 winnt4,win2k,winxp,win2k3。WIN9x 系列 的操作系统的 Setup API 将会拒绝执行这种类型的 .INF 文件。 在示例 01 中, LayoutFile=Layout.inf, Layout1.inf, Layout2.inf ,这一行的语法为: LayoutFile=filename.inf 。 filename.inf 文件包含安装组件必需的安装布局信息 (源盘和源文 件 ),该行是可选的,如果没有提供布局信息文件,则在 .INF 文件内必须包含 [SourceDisksNames] 和 [SourceDisksFiles]节(必须注意这一点)。 以下各行条目为可选内容: 在示例 01 中, Class=Image,这一行的语法为:Class=Unknown,系统定义用户指定的 类名。(有关信息,参考下面的设备管理器支持的硬件类型) 在示例 01 中, Provider=%SoftMfg%,这一行的语法为:Provider=%提供商名称 %,提 供商。 在示例 01 中, DriverVer=11/26/.1126.72,这一行的语法为:DirverVer=月 /日/ 年,版本及发布时间。 在示例 01 中, CatalogFile=usbvm31b.cat,这一行的语法为: CatelogFile=[.Ntetc],包含 WHQL 数字签名(即微软数字签名)的目录说明文件。设备管理器支持的硬件类型INI 文件中的类型名称 Adapter DiskDrie Keyboard System MEDIA Modem MultiFunction Monitor CDROM设备安装器中的类型名称 CDROM 控制器 磁盘驱动器 键盘 系统设备 声音、视频和游戏控制器 调制解调器 多功能适配器 显示器(监视器) CD-ROM描述 非 SCSI CDROM 控制器主板设备(PCI、PIC 等) 多媒体如网卡和调制解调器的二和一 Display Fdc Hdc Mouse Ports Printer MTD Image nodriver PCMCIA SCSIAdapter Unknown Infrared 1394 GPS HID Net NetTrans NetClient NetService DBC USB显示卡 软盘控制器 硬盘控制器 鼠标 端口(COM 和 LPT) 打印机 内存技术驱动程序 图像捕获设备显示适配器串口和并口PCMCIA 内存卡 如摄像头 不需要驱动的设备PCMCIA 插座 SCSI 控制器 其他设备 红外线设备 1394 总线控制器 全球定位设备 人机接口设备 网络适配器 网络协议 网络客户机 网络服务 Device Bay Controller 通用串行总线控制器 SCSI 主机适配器㈡、 [ClassInstall(32)] 节:为设备定义一个新的类别(Class)。主要用于硬件设备的安装。㈢、[Manufacturer] 节:[Manufacturer] 与 [Manufacturer Name] 节, 列出此 .INF 文件可 辨识的所有硬件设备,并列出了开发该硬件的厂商名称,主要用于硬件设备的安装。在设备驱动程序的 .INF 文件中必须包括 [Manufacturer] 节与 [Manufacturer Name] 节。对应到本示例(即示例 01)中就是[Manufacturer] 节和[VM]和 [VM.NT]节,安 装新硬件的向导中列出来的厂商名字和设备名称就是来自这两个节。这行语句 “ %HwMfg%=VM,NT” 的等号右边的名字指明设备制造商是 VM,等号左边是厂商的名字, 示例 01 中的的厂商名称是&VM&(在后面讲到的[Strings]节中)。在一个 .INF 文件中可以有 多个设备制造商的名字,都必须放在 [Manufacturer]节中,同时[Manufacturer Name] 节可 以列出该厂商的多种设备。 ㈣、 [Manufacturer Name] 节: [Manufacturer Name] 节区含有对要安装的设备的描述,并 为要安装的设备指出 [Install] 节区。 [Manufacturer Name] 节语法: [Manufacturer Name] device-description=install-section-name,device-id[,compatible-device-id]... device-description 就是对要安装的设备的描述。install-section-name 就是此设备 的 [Install] 节区名称, [Manufacturer Name] 节区名称必须已在 [Manufacturer] 节区中被定 义。 device-id 是此设备的硬件标志符,每个厂家的不同的硬件对应着不同的设备标志符。 对应到示例 01 中,就是这行语句 “ %USB\VID_0AC8&PID_0302.DeviceDesc%=VM.USBDCam302.XP,USB\VID_0AC8&PID_3 01B” 等号左边是设备的描述,也就是设备名字是&VIMICRO USB PC Camera&,而等号右边 的 VM.USBDCam302.XP,USB\VID_0AC8&PID_301B 是设备标志符,这个标志符是对应到 一类的硬件设备,就是 USB 视频设备,操作系统检测到 USB 视频设备,安装相应的驱动的 时候,就会从设备驱动的安装节即[VM.USBDCam302.XP] 节开始安装驱动。可以看出来 此 .INF 文件可以用于通用的 USB 视频设备&VIMICRO USB PC Camera&的驱动程序的安装 (相关信息,也可以从设备管理器里查看)。普通的安装软件的 .INF 文件中,不包括 [Manufacturer] 与 [Manufacturer Name] 节, 即使包含,也不会执行它们,这 2 个节仅仅用于硬件的设备驱动中起作用。在下面这个实例 (即示例 02 )中,就不包含他们。;示例 02 寒夜孤星 moviemk.inf 【Windows Movie Maker 2.1 简体中文版安装】 [version] signature=&$Windows NT$& ClassGUID={0-} LayoutFile=layout.inf [DefaultInstall] CopyFiles=SetupFiles,LocalizedFiles,SharedFiles,Profiles,Help AddReg=MediaPadReg ProfileItems=MovieInstallItems [DestinationDirs] SetupFiles=16422,%MEDIAPAD_DIR_LFN% LocalizedFiles=16422,%MEDIAPAD_DIR_LFN% SharedFiles=16422,%MEDIAPAD_DIR_LFN%\Shared Profiles=16422,%MEDIAPAD_DIR_LFN%\Shared\Profiles Help=16422,%MEDIAPAD_DIR_LFN%\MUI\%LCID% [SetupFiles] .\moviemk.exe,,,32 .\WMM2AE.dll,,,32 .\WMM2EXT.dll,,,32 .\WMM2FILT.dll,,,32 .\WMM2FXA.dll,,,32 .\WMM2FXB.dll,,,32 [SetupFiles.Security] &D:P(A;;GRGX;;;BU)(A;;GA;;;BA)(A;;GA;;;SY)& [LocalizedFiles] .\WMM2RES.dll,,,32 .\WMM2ERES.dll,,,32 .\WMM2RES2.dll,,,32 [LocalizedFiles.Security] &D:P(A;;GRGX;;;BU)(A;;GA;;;BA)(A;;GA;;;SY)& [SharedFiles] .\Empty.txt,,,32 .\Filters.xml,,,32 .\news.png,,,32 .\paint.png,,,32 .\Sample1.jpg,,,32 .\Sample2.jpg,,,32 [SharedFiles.Security] &D:P(A;;GRGX;;;BU)(A;;GA;;;BA)(A;;GA;;;SY)& [Profiles] .\Blank.txt,,,32 [Profiles.Security] &D:P(A;;GRGX;;;BU)(A;;GA;;;BA)(A;;GA;;;SY)& [Help] .\moviemk.chm,,,32 [Help.Security] &D:P(A;;GRGX;;;BU)(A;;GA;;;BA)(A;;GA;;;SY)& [MediaPadReg] HKLM,&SOFTWARE\Microsoft\Active Setup\ Installed Components\{CDD-41d5-D6F71D0}&,&ComponentID&,,&Windows Movie Maker v2.1& HKLM,&SOFTWARE\Microsoft\Active Setup\ Installed Components\{CDD-41d5-D6F71D0}&,&IsInstalled&,1,01,00,00,00 HKLM,&SOFTWARE\Microsoft\Active Setup\ Installed Components\{CDD-41d5-D6F71D0}&,&Version&,,&2,1,4026,0& ………… Name CmdLine InfoTip = %MEDIAPAD_START_MENU% = 16422, %MEDIAPAD_DIR_LFN%, moviemk.exe = &@%16422%\%MEDIAPAD_DIR_LFN%\wmm2res.dll,-63096&DisplayResource=&%16422%\%MEDIAPAD_DIR_LFN%\ wmm2res.dll&,61446 [Strings] MEDIAPAD_START_MENU = &Windows Movie Maker& MEDIAPAD_DIR_LFN = &Movie Maker& APPS_DESC LCID = & 附件& = &0804&㈤、 [Install] 节:描述设备驱动程序与硬件设备的实际属性。[install];指向添加的设备接口列表 Copyfiles=Ggdriver.Files.Driver AddReg=Ggdriver.AddReg LogConfig=logconfig DirverVer=19/10/2001 ProfileItems=AB\cd它也定义了所有 [Install] 节的名称,在此定义的节中包含了安装该设备的信息和命令。 默认情况下,会执行 [DefaultInstall] 节,在示例 01 中, Install 操作就会执行 [DefaultInstall] 节。 [DefaultInstall] 节中包含指向其他节的指针,该节可用于指定要复制和 删除的文件、注册表的更新、.INF 文件的更新等。[Install] 节分 [DefaultInstall] 和 [OtherInstall] 两类,它们使用相同的格式。 [DefaultInstall] 节节名“ DefaultInstall” 如前面表格内容所述被显式地在注册表中指定,大小 写不敏感。该节也是系统获取 INF 文件中安装信息的首要入口,当用户右击 INF 文件选 “ 安 装” 时该节内容被执行。 [OtherInstall] 与 [DefaultInstall] 节遵循相同的语法, 但必须被显式地 调用,常被用来定义反安装动作。它们均可包括以下种类的可选入口 :[Install] 节的语法: [install-section-name] Copyfiles=file-list- section[,file-list-section]... ;等号右侧是拷贝文件罗列节节名,将文件拷贝 到 [DefaultInstall] 节指定的位置,所有的源文件必须在 [SourceDisksFiles] 节中列出。 LogConfig=log-config-section- 指定遗留设备的 I/O 地址,IRQ 等配置的详细信息 Renfiles=file-list-section[,file-list-section]... ;重命名文件 Delfiles=file-list-section[,file-list-section]... ;删除文件 UpdateInis=update-ini-section[,update-ini-section]... ;安装过程中 INI 初始化文件内容 UpdateIniFields=update-inifields-section[,update-inifields-section]... ;安装过程中 INI 初始化文件值内容 AddReg=add-registry-section[,add-registry-section]... ;增加注册表键或键值 DelReg=del-registry-section[,del-registry-section]... ;删除注册表键或键值 Ini2Reg=ini-to -registry-section[,ini-to-registry-section]... ;用 INI 文件内容更新注册表 UpdateCfgSys=update-config -更新 Config.sys 文件内的设置 UpdateAutoBat=update-autoexec-更新 AUTOEXEC.BAT 文件内的设置 上面的入口并非都必需,如果需要一个入口,则应该在等号右侧指出存在于该 INF 文 件内的索引节名 (不用指出节名的一个特例是 CopyFiles 入口, 可使用“ @” 字符后跟文件名的 形式,效果是直接将文件拷贝到 [DefaultInstall] 节所罗列的硬盘目录 )。节名需由可打印字 符组成,在中文系统平台中,可使用中文字符作为节名,这也是体现 INF 格式安装本地化 的地方,非常直观。每类入口在一个 [Install] 节内只能出现一次,第二次及以后出现的同名 重复入口将被忽略。每类入口的等号右侧可罗列多个节名,节名之间以逗号分开,以便列举 同一类动作的不同作用对象,如删除多个注册表键、拷贝文件到多个目录路径等。对应到示例 01 中, [Install] 节就是 [VM.USBDCam302.XP]节,其中要执行复制文件 CopyFiles(如:CopyFiles=VM.USBDCam.Files.Ext, VM.CustomPrp.CopyFiles, VM.STI.CopyFiles, VM.XPAPP.CopyFiles, VM.XPTWAIN.CopyFiles, VM.Config.CopyFiles) 和添加注册表项目 AddReg(如: VM.USBDCam.AddReg, VM.CustomPrp.AddReg, VM.WIA.AddReg, VM.TWAIN.AddReg )等操作。 如果是安装普通的软件的 .INF 文件,可以通过鼠标右键菜单上的 “ 安装” 命令来安装, 这个时候 .INF 文件必须包括[DefaultInstall]节,也可以包括其他的[Install] 节,用 RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection [Install] 节的名字, 这样类似的命令来安 装。[Install] 节定义了安装程式与硬体驱动需要的资源,以便安装新的驱动程式或者软件。 此节中每个条目都有其特定格式与意义, 并非每个条目都是必要的。 无论是安装驱动程序还 是普通的软件,最后都要从某一个[Install] 节开始执行。 ㈥、[DestinationDirs] 节: 指定硬盘上复制、 删除或重命名节文件的位置 (例如 \Windows 或 Windows\System)。.INF 文件通过 [DestinationDirs] 节来指定操作的目标路径,语法如下:[DestinationDirs] file-list-section =ldid[, subdir ] DefaultDestDir=ldid[, subdir ][DestinationDirs] 节定义了 [file-list-section] 节中指定的操作(可以是 CopyFiles、 RenFiles 或 DelFiles 节)的目标目录。 DefaultDestDir 命令可以为 .INF 文件中的任何没有明 确在 [DestinationDirs] 节中命名的 CopyFiles、RenFiles 或 DelFiles 节指定默认目标文件夹。 在 .INF 文件中,使用逻辑磁盘标识符 (LDID) 来表示路径,如下表:逻辑磁盘标识符 (LDID) -1 绝对路径 00 Null LDID - 可用于创建新的 LDID 01 Source Drive:\ pathname (inf 文件所在目录的路径) 10 Windows 文件夹(等价于%windir%目录 ) 11 System 文件夹 (98 系统是%SystemRoot%\system,2000 系统是%SystemRoot%\system32) 12 IOSubsys 文 件 夹 ( 98 系 统 是 %SystemRoot%\system\Insubsys , 2000 系 统 %SystemRoot%\ system32\Drivers ) 13 Command 文件夹 17 Inf 文件夹 (%SystemRoot%\inf 目录) 18 Help 文件夹 (帮助目录) 20 Fonts (字体目录) 21 Viewers (查看器目录) 22 VMM32 23 Color 文件夹 (颜色 ICM) 24 包含 Windows 文件夹的驱动器根目录 25 共享目录 28 Host Winboot 30 启动盘(引导驱动器)的根文件夹 31 虚拟启动盘的主驱动器根文件夹 51 假脱机目录 52 假脱机驱动程序目录 53 用户配置文件目录 54 Windows 2000 引导目录 55 打印处理器目录 16406 All Users\Start\Menu 16407 All Users\Start\Menu\Program 16408 All Users\Start\Menu\Program\Startup 16409 All Users\Start\Desktop 16415 All Users\Start\Favorites 16419 All Users\Start\Application Data 16422 Program Files 16427 Program Files\Common 16429 All Users\Templates 16430 All Users\Documents 如示例 01 中,这行语句“ VM.XPTWAIN.CopyFiles = 10, twain_32\VM301b” 表明 VM.XPTWAIN.CopyFiles 这个文件列表中文件的目标路径是 %windir%\system32\twain_32\VM301b,其中 10 代表 Windows 所在的文件夹,也就是说 VM.XPTWAIN.CopyFiles 这个文件列表(请看示例 03 )中文件 VM31bTXP.DS 在安装驱动 的时候将会被复制到 %windir%\system32\twain_32\VM301b 文件夹。而这行 “ VM.Config.CopyFiles = 10, inf” ,意思是 config.set 这个文件将会被复制到 10 下的 inf 文件 夹,也就是%windir%\inf 文件夹中。当然,他也可以写成“ VM.Config.CopyFiles = 17” ,效果 是一样的。;示例 03 寒夜孤星 usbvm31b.inf 【华尔特 F18 型摄像头驱动】 。。。。。。 [VM.XPTWAIN.CopyFiles] VM31bTXP.DS [VM.Config.CopyFiles] config.set 。。。。。。㈦、 [Strings] 节:定义并列出上面所使用的可本地化字符串。 如果某个特定的字符串会在 .INF 文件中频繁地出现,那么在此节中为它们定义一个字 符串变量将会是个好选择。 尽管 [Strings] 节一般被放置在 .INF 文件的末尾,字符串宏可在 .INF 文件任何地方使 用,安装引擎解释、展开字符串宏为给定的长字符串并做进一步处理。字符串宏在使用时需 用百分号 (%)括起。 [Strings] 节内语句的语法为: strings-key=value 其中 strings-key 为由字母或数字等可打印字符组成的宏名。 Value 为被双引号括起的长字符串,字符串可由字母、数字或其他可打印字符(意思是可以 使用汉字哦)组成。例如示例 01 中,在 [Strings] 节中定义了 HwMfg=&VM& 。而在 [Manufacturer] 节中便使用 了 %HwMfg%=VM,NT 。同时, HwMfg 变量被用%括了起来。 ㈦、[FileCopy/Delete/RenameSection(s)] 节:列出要复制、删除或重命名的文件。节的名字 是 CopyFiles,DelFiles ,RenFiles 。[CopyFiles]节,复制文件。.INF 文件的[CopyFiles]节有一个唯一的名字,并从[DDInstall]节的 CopyFiles 指令引用 它。该节中的每个项采用如下形式: destination Cfilename[, source- filename,temp-filename,flag] 这里的 destiantion-filename 是最重要复制的目标文件名。如果源文件名不相同,必须规 定 source Cfilename。 Temp-filename 值不再适用(虽然 Windows 98 仍然要求),它在系统 再次引导之前规定新文件的临时文件名。对于 Windows 2000 等,忽略此值。 Falg 值规定对新目标文件的处理,其描述见下表 CopyFiles 标志定义 。可以对 falg 值 中的各个为进行 “ 或” 运算, 以使多个操作起作用。 几种操作是互斥的 (例如, WARN_IF_SKIP 和 NOSKIP), 有疑问时应当查阅有关文档。 因为[CopyFiles]节的项的语法没有包含一个可选项来规定源文件的磁盘或路径, 必须使 用其他 .INF 节[SourceDisksNames] 和 [SourceDisksFiles]。然而[CopyFiles]节中各项复制的 文件由另一个 .INF 节[DestiantionDirs] 节指定。 CopyFiles 标志定义位置 0x0 0x0 0x0 0x4 0x1 0x0002 符号名称 COPYFLG_REPLACEONLY COPYFLG_NODECOMP COPYFLG_FORCE_FILE_IN_USE COPYFLG_NO_OVERWRITE COPYFLG_REPLACE_BOOT_FILE COPYFLG_NOPRUNE COPYFLG_NO_VERSION_DIALOG COPYFLG_NOVERSIONCHECK 说明 如果源文件存在则复制 不解压缩复制 对源文件执行延迟重命名,强制重新引导 不替换已有源文件 文件是系统装入程序的一部分,强制重新引导 强制复制操作,即使安装者认为不必要也要复制 不要覆盖较新的文件(如果安装包被数字签名则被忽略) 总是覆盖目标文件COPYFLG_OVERWRITE_OLDER_ONLY 覆盖较旧的目标文件 COPYFLG_WARN_IF_SKIP COPYFLG_NOSKIP 用户跳过文件时发出警告 不允许用户跳过文件[DelFiles] 节,删除文件。 [RenFiles]节,重命令文件。㈧、 [RegistryUpdateSection(s)] 节: 指定在注册表中添加或删除的项目。 节的名字是 AddReg, DelReg 。 [addreg] 节,指定新的键和值。一个 INF 文件的 [AddReg]节被唯一命名,并从[DDInstall] 节中的 AddReg 指令引用它。 此节的目的是提供增加或者修改目标系统注册表中的项目。本节中每个项目采取如下形式: reg-root[, subkey, value- name ,flags , value] 这里的 reg- root 是注册表库( hive)之一的缩写。值 HKCR HKCU HKLM HKU HKR说明 HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS 将被安装的设备的硬件子键值表示要被修改的注册表库。Subbkey 值表示库底下的键名,在层次结构中子键用反斜 线( \)字符隔开。例如, software\W2KdriverBook\Driver\Seting 是 HKCU 或者 HKLM 库的 一个有效子键。 Value-name 指定要增加或修改的注册表值。每个注册表键包含一个或多个值,保存不 同类型的数据。注册表编辑器(Registy Editor)在右边面板中列出子键的值。值名和值数据 同时在该面板中出现,左边面板只列出子键。 Flags 指定数据保存的类型, flages 可能的位置见下表所列: AddReg Flags 定义位值 0x01 0x04 0x20 0x08 0x01 0x20001 符号名 FLG_ADDREG_TYPE_SZ FLG_ADDREG_BINVALUETYPE FLG_ADDREG_NOCLOBBER FLG_ADDREG_DELVALUE FLG_ADDREG_KEYONLY FLG_ADDREG_OVERWRITEONLY FLG_ADDREG_TYPE_MULTI_SZ FLG_ADDREG_APPEND FLG_ADDREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_DWORD FLG_ADDREG_TYPE_NONE 说明 空结束字符串 二进制数据 不替换已有值 删除子键或值名 建立子键,忽略值 如果值存在,则替换他,否则什么也不做 REG__MULTI_SZ 数据(数组) 添加到已有的 REG__MULTI_SZ 数组 REG_EXPAND_SZ 数据 DWORD 数据 REG_NONE 数据[Delreg]节,删除的键和值。 ㈨、[IniFileUpdateSection(s)] 节:指定 .ini 文件的更新。链接将在该节中创建。 节的名字 是 UpdateInis。㈩、[DDInstall.Services] 节:为了真正的使复制的文件成为目标系统上的驱动程序,必须通 知服务器管理程序(SCM)。例如安装在 Windows 2000 下的每个驱动程序在 HKLM\System\Current-ControlSet\Services 下的注册表中有一项。ServiceType 值为 1 表示一 个内核模式设备驱动程序。StartType 指定在引导过程中的什么点上驱动程序装入 ( 3 表示按 需或手动启动)。在驱动程序装入过程中遇到错误时,ErrorControl 值确定发生了什么情况。 ServiceBinary 值指向驱动程序文件( .SYS 文件)的位置,但是,如果二进制值位于 %windir%\system32\drivers 目录, 并且与 HKLM\… \Services 下的子键有相同的名字,则可以 忽略 ServiceBinary 值。 DDInstall.Services 节项目中包括一个形式如下的项目: AddService = ServiceName ,[flags] ,service Cinstall Csection[,eventlog Cinstall Csection] 这里的 ServiceName 表示设备的名字, 通常是驱动程序的名字, 没有 .SYS 扩展名。 (Flags 值的描述见下表 AddService Flags 定义) Service Cinstall Csection 和可选的 eventlog- install C section 值调出控制服务值项目(诸如 ServiceType 和 StartType)的新增的 INF 节名字。 AddService Flags 定义位值 0x08 0x10 0x00020 符号名称-SPSVCINST_ ASSOCSERVICE NOCLOBBER_DISPLAYNAME NOCLOBBER_DESCRIPTION NOCLOBBER_STARTTYPE NOCLOBBER_ERRORCONTROL 说明 驱动程序是一个 FDO(功能驱动程序),不是一个过滤器 不覆盖友好的名字 不覆盖说明 不覆盖启动类型 不覆盖错误控制[ServiceInstall] 节: [ServiceInstall] 节名字实际上由 [DDInstall.Services] 节中每个 AddService 项唯一规定, 它控 制把驱动程序安装到服务控制管理程序。 [ServiceInstall]节允许的项见下表(ServiceInstall 节中的项目)所列。 ServiceInstall 节中的项目项 Display Name Description值 驱动程序的友好名字,显示在设备管理器中 驱动程序或服务的简短描述,由设备驱动程序描述 驱动程序类型:ServiceType0x01 :内核驱动程序 0x02 :文件系统驱动程序 规定驱动程序何时装入: 0 :引导时间 1 :系统启动StartType2 :系统自动启动后 3 :按需启动(手动) 4 :禁用 驱动程序装入期间对错误的处理: 0 :忽略所有错误ErrorControl1 :把错误显示给用户 2 :用“ 最后一次正确配置” 重新启动,忽略伺候发生的错误 3 :用“ 最后一次正确配置” 重新启动,如果此后出现错误,则进行故障检验ServiceBinary驱动程序的完整路径名,他可以包括 LDID 值( 十一)、 [SourceDisksNames] 节:列出包含文件的磁盘。[SourceDisksNames] 节内语句的语法为:disk-ordinal=“ disk-description” ,disk-label,disk-serial-number 其中 disk-ordinal 为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从 1 开始递增的整数,0 不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不 能重复。 disk-description 为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或 目的。安装引擎将该字符串显示在对话框内以提示用户。 disk-label 为源盘的卷标识。 disk-serial-number 未使用,但必须被设置为 0。 参考示例 05 :1 = %SRCDISKNAME%,,, ;示例 05 寒夜孤星 usbvm31b.inf 【华尔特 F18 型摄像头驱动】 。。。。。。 [SourceDisksNames] 1 = %SRCDISKNAME%,,, [SourceDisksFiles] usbVM31b.sys = 1 VM31bPrp.Ax = 1 VM31bSTI.dll = 1 VM31bTWN.DS = 1 VM31bTXP.DS = 1 amcap.exe = 1 StillCap.exe = 1 VMCap.exe = 1 VM_STI.EXE = 1 config.set = 1 RunSetup.dll=1 。。。。。。( 十二)、 [SourceDisksFiles] 节:列出每个文件所在的特定磁盘。[SourceDisksFiles] 节内语句的语法为: file-name=disk-number[,subdir] [,file-size] 其中 file-name 为必选项,是源盘上文件的名称。 disk-number 是包含 file-name 指定文件所在源盘的盘符序列码,该盘符序列码需在 [SourceDisksNames] 节中列出, 并大于或等于 1。 Subdir 为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。 file-size 为可选项,表明文件的大小,以字节为单位。 参考示例 05 :usbVM31b.sys = 1说明:如果所有文件都在根目录中, [SourceDisksFiles] 节可以是空的。( 十三)、 其他的节还有许多, 如: Update .ini Fields 节 (UpdateIniFields) , Add Ini File to Registry 节 (Ini2Reg),Update Config.sys 节 (UpdateCfgSys), Update Autoexec.bat 节 (UpdateAutoBat), Optional Components 节,等等。由于这些极少用到,所以就不详细讲解 了。 以下是常用命令列表:INF AddReg 命令 INF DelReg 命令 INF CopyFiles 命令 INF DelFiles 命令 INF RenFiles 命令 INF AddService 命令 INF DelService 命令 INF AddInterface 命令 INF BitReg 命令 INF LogConfig 命令 INF ProfileItems 命令 INF UpdateInis 命令 INF UpdateIniFields 命令 INF Ini2Reg 命令.INF 文件是由 Windows 的 Setup API 解释执行的脚本文件,它的运行过程很简单,是 一种线性的执行,线性的意思就是.INF 文件的运行过程不存在分支语句,也就是没有条件 语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节为单位来执行的,从某 一个 [Install]节开始执行,从上到下执行该节中的条目,如果该条目是一个节,那么就一条 条执行子节中的条目,如此递归执行。 这样的脚本看起来功能很弱, 但是对于简单的安装任务已经足够了, 安装不外乎复制文 件,添加注册表,修改.INI 文件等任务,这些都可以用.INF 文件来完成。对于更复杂的安装 要求,如要求安装程序的界面漂亮方便,要求有选择性的安装,要求安装程序自动修复的功 能,就只好求助于其他的工具了,如微软的 Windows Installer ,就具备更加强大的功能。验证 INF 语法DDK( Device Development Kit,设备开发包)包含一个基本的工具 CHKINF,在 DDK 的 Tools 目录中。它依赖于 Perl 脚本引擎,该引擎可以从
上下载。虽然工具 没有什么优点,但它在检查标准 Microsoft INF 文件时能报告许多错误。工具以 HTML 文件 形式输出。 DDK Tools 目录还包括一个用语简化 INF 文件构造的实用程序 CENINF。EXE 。 必须 把该工具区分为基本工具,它对入门者是有用的。 最后,DDK 提供了 STAMPINF。EXE 这一简单工具,它提供了快速增加或修改 INF 中版本 信息的机制。 INF 高级应用实例利用 INF 文件,我们可以完成很多意想不到的操作,这里通过几个实例进行说明:实例一:完全删除驱动程序很多情况下, 当我们将不需要的硬件设备从系统拔出或取消连接后, 其驱动程序并未从 系统中真正删除,系统中仍然保留了这些设备的驱动程序文件和信息,时间一长,不仅会导 致系统越来越庞大,而且这些顽固的驱动程序可能会影响新设备的安装,因为 Windows 会 自动记忆曾安装过驱动程序的设备的 INF 文件信息,当我们再次安装同类型硬件时,系统 会自作聪明的自动安装旧硬件的驱动程序,而拒绝接受新的驱动程序。说到这里可能有人要问为什么要删除驱动程序和安装信息文件。 这是有原因的,不知道 大家注意到 Windows 的驱动程序安装中的一个问题没有,在安装驱动程序时需要查找驱动 程序无论你是否指定搜索的位置,Windows 都首先搜索自身的 INF 文件夹在其中查找认为 合适的程序。而且当找到多个合适的驱动程序后它首先考虑的是 INF 文件夹的纪录的驱动 程序,有时还不加询问自动安装这个驱动程序。这一点使我们更新或更换驱动程序带来了麻 烦,因为有这样的情况当第一次安装了一个错误的驱动程序后, Windows 就把这个错误的 驱动程序的 INF 文件拷贝下来,要想重新安装正确的驱动程序时 Windows 总是安装错误的 驱动程序,它总把 INF 文件夹中的 “ 安装信息” 文件认为是正确的而排斥其它的驱动程序。我 们有很多方法来解决这个问题, 但我认为找到不需要的“ 安装信息” 文件并且删除它是最彻底 的。例如笔者所使用的电脑,虽然提供了 IEEE 1394 接口,但由于平时并不使用相应设备, 于是打算将其从系统中彻底卸载。首先从“ 控制面板” 打开“ 设备管理器 ” 窗口,在“ IEEE 1394 总线主控制器 ” 下选择 “ Texas Instruments OHCI Compliant IEEE 1394 Host Controller 设备” , 右击后切换到 “ 驱动程序文件详细信息” 窗口,如图 2 所示,这里清楚地列出了该设备所对应 的全部驱动程序文件的详细路径, 请记录下来一一删除即可。对于未能正确显示驱动程序文 件信息的设备,我们可以用记事本打开相应的 INF 文件,在 [SourceDisksFiles] 小节查找所 有的 XXX.dll 、XXX.vxd 、XXX.drv 、XXX.exe、XXX.ini 等类型的文件名,记录下来后手动 删除。接下来, 我们还需要进入 C:\Windows\INF\文件夹, 这里找到了 1394.INF、 1394vdbg.INF 两个文件,将其全部删除就可以了。实例二:未通过 WHQL 认证的设备驱动程序的 INF 文件对于未通过微软 WHQL 认证(微软数字签名认证)的设备驱动程序,安装后你可能无 法找到其对应的 INF 文件,它们的位置在哪里呢? 原来, Windows 对于那些未通过 WHQL 认证的设备驱动程序,安装时并未直接将相应 的 INF 文件复制到 C:\Windows\INF\文件夹中, 而是进行了重新命名, 以便系统识别和管理, 当然这些文件的位置并未改变。它们的文件名以 oem*开头,这里的 “ *” 代表具体的数字,从 0 开始,其内容构成与普通的 INF 文件没有什么区别。实例三:让 Windows 认识改造硬件Analog Device 公司为板载声卡提供了配套的 SoundMAX 驱动程序,通过安装在主板上 的 Codec 与预告加载的音频渲染软件结合在一起,提供了广受欢迎的 Yamaha DLSbyXG 音 色库和 Sensaura 5.1 Virtual Theater 环绕声,并且支持所有主流游戏音频技术, 可惜的是只支 持 AD188x、AD189x、 AD198x 等有限的芯片。如果你的板载声卡使用了其他公司的芯片, 在安装时将无法继续。不过,通过某些技术手段,我们可以让非 AD1985 芯片的板载声卡安装 SoundMAX 驱 动程序,这自然又要用到 INF 文件了。首先,从驱动网站下载 5.12.5243 WDM 版本的 SoundMAX 驱动程序,下载时请注意对应相应的操作系统版本,将下载回来的文件解压缩, 在“ \SMAXWDM\W2K_XP\” 文件夹有三个 INF 文件, 其中 smwdmCH4.inf 文件对应的是 Intel 系列的 ICH4 芯片, smwdmCH6.INF 对应的是 Intel 系列的 IC6 芯片, 由于笔者使用的是 VIA 系列的芯片组,因此这里选择了 smwdmCH5.inf,用记事本打开后定位到[AnalogDevices]小 节的最后一行,按照固定的格式将板载声卡的 ID 号添加过来。板载声卡的 ID 号,可以在 “ DirectX 诊断工具 → 声音” 窗口中查看到,例如 “ PCI\VEN_1106DEV_3058SUBSYS_REV” ,添加时请注意使用相同的格式,另外 必须将两个 “ &&” 符号补充在相应的位置,以保证足够的字符个数,否则安装时仍然会无法 通过。接下来,我们就可以顺利安装 SoundMAX 驱动程序了。用.INF 文件编辑注册表.INF 文件可以编辑操纵注册表,相应的的命令是 AddReg 和 DelReg ,语法如下:AddReg = add-registry- section[,add- registry-section]... [ add-registry- section] reg-root-string, [subkey], [value-name], [flag], [value] [add- registry-section]节定义了将要添加的注册表子键或值名,可以有选择地设置它的值。 DelReg = del-registry-section[,del- registry-section]... [ del- registry-section] reg-root-string, subkey, [value-name] [ del- registry-section]节定义了将要从注册表中删除子键 subkey 或值名 value-name 。 有时候上网遇到某些网站,修改了 IE 的主页,然后禁用了 REGEDIT 工具,这个时候 很多人只好借助于其他第三方工具如魔法兔子等来恢复注册表的编辑权限, 其实这个时候仅 仅依靠 .INF 文件就可以恢复使用 REGEDIT 工具的权限。 把下面的这段代码复制到记事本里,另存为 RegHYGX.inf,然后右击它选择“ 安装(I)” , 就可以了。;示例 06 寒夜孤星 RegHYGX.inf 【编辑注册表实例】 [Version] Signature=&$CHICAGO$& [DefaultInstall] AddReg=My.Add.Reg [My.Add.Reg] HKCU,&SOFTWARE\Microsoft\windows\currentversion\policies\system&,&disableregistrytools&, 0x& HKLM,&SOFTWARE\Microsoft\windows\currentversion\policies\ system&,&disableregistrytools&, 0x&当然还可以用其他的方法,原理也是一样的,这里仅仅是演示一下.INF 文件的用途。 直接使用注册表文件, 有时候还会遇到另外一个缺点, 就是.REG 文件里面使用 16 进制 代码表示 UNICODE 字符串的,如下面的两条注册表语句:[HKEY_CURRENT_USER\Software\Microsoft\ Windows\ CurrentVersion\ Explorer\User Shell Folders] &Cookies&=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,43,00,6f,0 0,6f,00,6b,00,69,00,65,00,73,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SoftEther] &ImagePath&=hex(2):22,00,44,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,6c,00, 65,00,73,00,5c,00,53,00,6f,00,66,00,74,00,45,00,74,00,68,00,65,00,72,00,5c,00,53,00,6f,00,66,00,74,00,45,00,74, 00,68,00,65,00,72,00,2e,00,65,00,78,00,65,00,22,00,20,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,00,00,00,00 这上面两条语句难以阅读和修改,手工修改的话很麻烦,其中 &Cookies&的值实际上就是 “ %USERPROFILE%\Cookies” 字符串的 UNICODE 表示。 &ImagePath& 的值实际上就是&D:\Program Files\SoftEther\SoftEther.exe& service 如果用.INF 文件的形式的话,就很简单明白了 :;示例 07 寒夜孤星 RegHYGX2.inf 【编辑注册表实例】 [Version] Signature=&$CHICAGO$& [DefaultInstall] AddReg=Folders_AddReg [Folders_AddReg] HKCU,&Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders&,&Cookies&,0x,&%USERPROFILE%\Cookies& HKLM,&SYSTEM\CurrentControlSet\Services\SoftEther&,&ImagePath&,0x020000,&&&D:\Program Files\SoftEther\SoftEther.exe&& service&这个时候可以手工修改里面的路径信息,而.REG 文件则很难做到这一点。用.INF 文件编辑.INI 文件.INF 文件可以使用 UpdateInis 命令修改.INI 文件的功能也经常需要,UpdateInis 的语法 如下:UpdateInis = update-ini-section[,update-ini-section]... [ update-ini-section-name] ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags] [update-ini-section-name]节给出的 .INF 文件中替换、删除或添加的全部条目。ini-file 包含要更改条目的 .ini 文件名。 ini-section 包含要更改条目的节名。 old-ini-entry 可选,常用形式为 Key=Value。 new-ini-entry 可选,常用形式为 Key=Value。 flags 是可选操作标记。 使用逻辑磁盘标识符 (LDID),可以方便的修改.INI 文件中的路径信息,当然其他的条目也 同样。举例如下: Total Commander ,是一套极佳的文件管理员,内含各种压缩与解压缩, 类似 NC 般非常好用的工具,对于文件与路径的寻找,除一般的复制、删除、搬移、编辑等 功能外,还有 FTP 功能( 具有续传、背景传输)与解决了中文乱码问题, &专题&再也不会变成 & 彩题&、新增文件分割、文件合并、文件编码、文件解码(MIME, UUE, XXE)及新的操作 介面 (浮动工具列 )。真是一套相当强悍可完全取代文件总管的工具程序 。 Total Commander 依靠 wincmd.ini 来配置相应的操作特性和功能,于是可以使用如下的.INF 文件修改 wincmd.ini 中的路径信息。;示例 08 寒夜孤星 【编辑.INI 文件实例】 [version] Signature=&$CHICAGO$& [DefaultInstall] AddReg=AddGhister UpdateInis=UpdateInicmd [AddGhister] HKCU,&Software\Ghisler\Total Commander&,&IniFileName&,0,&.\\ wincmd.ini& HKCU,&Software\Ghisler\Total Commander&,&FtpIniName&,0,&.\\wcx_ftp.ini& [UpdateInicmd] %01%\wincmd.ini, Configuration,,&InstallDir=%01%& %01%\wincmd.ini, Configuration,,&Mainmenu=%01%\LANGUAGE\TCExtMenu.mnu&其中 [AddGhister]节负责修改注册表中记录的 wincmd.ini 的路径,而 [UpdateInicmd]节 负责修改 wincmd.ini 文件红的相应路径信息,可以看出,一个简单的 .INF 文件就完成了修 改 Total Commander 的路径的任务,在 Total Commander5.x 版本中,必须修改 wincmd.ini 文件中的路径信息,这个时候使用.INF 文件是非常方便的。用.INF 文件删除正在使用的文件有时候由于某些文件正被操作系统使用而无法删除,如某些用于资源管理器的 OCX 控 件,可以使用.INF 文件的 DelFiles 命令删除,该命令如果发现要删除的文件被锁定,就会把 文件放到系统删除队列中排队,等系统重启动的时候,该文件就自动被删除了。 Delfiles 的语法是:Delfiles= file-list-section [,file-list-section]... [file-list-section] filename,,,1 [file-list-section]节定义了将要删除的文件列表 ,filename 后面的 1 是一个标志,指明如果 文件当前无法删除,就等到系统重启动后删除。把下面的这段代码复制到记事本里,另存为 delinuse.inf,把这个文件拷贝到无法删除的文件的目录,然后右击它选择“ 安装(I)” ,就可以删 除当前目录下正在使用的 setup.exe 和 setup2.exe。;示例 09 寒夜孤星 【删除正在使用的文件实例】 [Version] Signature=&$Chicago$& [DestinationDirs] DefaultDestDir = 01 ; 当前目录 ,定义了将要删除的文件的路径 [DefaultInstall] DelFiles = DELETELIST [DELETELIST] setup.exe ,,,1; 将要删除的文件 setup2.exe ,,,1; 将要删除的文件同样可以使用 Copyfiles 命令替换系统正在访问的文件。 这些功能通过普通的 del 和 copy 命令都无法实现,如果不使用.INF 文件,必须使用第三方的软件来完成。辅助制作绿色软件在注册表.REG 文件中,不可以使用变量, 这个缺陷对于需要设置路径的安装程序来说, 是非常致命的弱点,.REG 文件中的路径都是静态的,一旦写好,就不会随着系统的变化而 变化,如果需要把安装的程序从 C 盘改变到 D 盘,而在.REG 文件中记录了安装路径的话, 这个时候直接倒入注册表文件 .REG 是不行的,导入的注册表仍然是原来写入的路径。而 在 .INF 文件中,可以使用变量来操纵路径,从而可以跟踪安装程序所需要的路径的变化。 对于绿色软件的制作, 可以看我写的另外的专门的文章― ― 绿色软件的制作, 其中核心 的一点就是获得原来软件的安装程序所做出的注册表的改变, 然后把该变化导出为一个注册 表文件.REG 来进一步分析。如果导出的.REG 文件不包括绝对路径, 那么可以把该注册表文 件和提取出的软件打包在一起做成绿色软件。如果导出的.REG 文件中包含当前软件的绝对 安装路径,那么就必须每次都要手工修改注册表中路径,是很麻烦的,降低了做成绿色软件 的意义所在。而使用.INF 文件,使用 AddReg 命令可以轻松容易的解决这个注册表路径的难 题。 对于绿色软件的安装制作来说,最重要的就是 01,也就是源文件夹。下面举一个例子: Registry Crawler V4.5 ,是强大的用户和开发者快速定位并配置注册表的工具软件。一个强 大的搜索引擎允许你基于搜索标准查找注册信息。(可以从天空软件站下载 /soft/2963.html ),安装完成后导出的注册表包含着如下一条语句:[HKEY_LOCAL_MACHINE\SOFTWARE\4Developers\RCrawler\AppPath] @=&F:\\tools\\Reg\ \RCrawler& 其中“ F:\tools\Reg\RCrawler” 是安装路径。而改写为 .INF 文件就是:;示例 10 寒夜孤星 【实例】 [version] Signature=&$CHICAGO$& [DefaultInstall] AddReg=Add [Add] HKLM,&SOFTWARE\4Developers\RCrawler\AppPath&,&&,0,&%01%&注意里面的%01%就代表当前的安装路径。当我们把 F:\tools\Reg\RCrawler 这个目录下的文件移动到其他目录时候,要用 .REG 文 件的方式的话,就必须手工修改注册表文件,而使用前面的.INF 文件的时候,什么都无需 修改,只要在文件管理器 explorer 里面,用鼠标右键执行“ 安装” 命令的时候, %01%就自动 被替换为当前所在的目录了。 最后,总结一句,注册表文件.REG 非常方便和直观,但是对于处理路径的变化的情况,非 常笨拙和不方便,而.INF 不如注册表文件直观,但是可以方便的处理路径信息(包括 UNICODE 的路径信息),所以应该把.REG 文件和.INF 文件结合使用,互相弥补各自的缺 点。 Autorun.ini 自动运行1 .自动播放运行程序;示例 04 寒夜孤星 AutoRun.inf 【自动播放】 [AutoRun] open=setup.exe icon=%SystemRoot%\system32\SHELL32.dll,27open= 后面为 exe 、bat、com 等可执行文件名,允许使用相对路径,但必须和 Autorun.inf 文 件隶属于同一根目录下。 icon= 后面为含有图标的文件,或 bmp 文件。 “ ,” 后面为改图标的索引标记。如果该文件包 含多于一个图标,必须用一个从 0 开始的索引进行标记。即第一个图标为 0,第二个图标为 1 ,第三个图标为 2。 说明:该 AutoRun.inf 文件必须在根目录下。 ( 2 ) ShellExecute 命令: 在所有的驱动器上生成“ 自动播放” 菜单项。 双击时自动运行 “ =” 后的文件,此时“ =” 后可以为任意扩展名的文件。 格式:ShellExecute = *.*或 [path\]*.*2 .自定义驱动器图标格式:;示例 11 寒夜孤星 AutoRun.inf 【驱动器图标】 [AutoRun] icon=Autorun.ico,icon= 后面为含有图标的文件,或 bmp 文件。 “ ,” 后面为改图标的索引标记。如果该文件包 含多于一个图标,必须用一个从 0 开始的索引进行标记。即第一个图标为 0,第二个图标为 1 ,第三个图标为 2。 注意:path 路径必须是本驱动器的路径,即 ico、 bmp、 exe、 dll 等文件必须在本驱动器内。 3 、添加右键菜单; 示例 12 寒夜孤星 AutoRun.inf 【右键菜单】 [AutoRun] shell\命令提示符\command=%SystemRoot%\ system32\CMD.exe格式:shell\名称\command=命令 “ 名称” 即你想要的右键菜单名称, “ 命令 ” 即你在单击该菜单项时执行的命令。INF Editor( 安装信息文件编辑器) 1.0 (相关下载)INF-Tool V6.3d 英文版 (相关下载)作为一个电脑爱好者, 当你把程序设计完成后,下一步接着就是要为它撰写一个安装程 序。可就在这一步,不少人都曾有过这样的苦恼:一个原来仅仅数百 KB 的小程序,写好安 装程序后竟然变成一、两 MB ,平白无故长 “ 胖” 不少。不过,现在大家不用心烦了,让“ 快 速的 INF 安装程序产生器 ” INF-Tool 为你分担吧! 首先,让我们看看 INF-Tool 到底有什么特长?原来,使用 INF-Tool 制作出来的安装程 序文件非常小!一般来说,如果使用 Install Shield 等专业安装工具所制作出来的安装程序, 在原来的软件之上还要再增加 1MB 左右的体积;而使用 INF-Tool 制作安装程序,你会发现 原来的程序只需再多几 KB 就具有安装的功能。仅这一点就够吸引你吧! 这是因为,INF-Tool 利用了 Windows 95/98 及 NT 内建支持的 INF 安装资料文件,由于 其基本的文件复制、创建目录等工作都交由操作系统来完成。因此,仅使用 2-3KB 的 INF 安装资料文件就能够完成专业安装工具的工作。最终用户只需在你提供的 INF 文件上单击 鼠标右键,并选择 “ 安装” 即可。 如果你想让用户更轻松一些,INF-Tool 附有一个小小的 SETUP.EXE 可执行文件。它能 够自动完成 INF 文件的安装工作,使用者只需直接执行此文件就可以了。并且,INF-Tool 还具备自动建立一个 .EXE 的单独可执行文件的功能,将所有需要安装的文件全都包括在其 中,这将方便网络使用者通过 Internet 下载并安装。 通常,其他专业安装工具都附带有脚本控制语言,而 INF-Tool 则全部采用图形方式的 操作界面。也就是说,你不需要学会任何程序语言,即可制作出颇具水准的安装程序。 同时,INF-Tool 还具备将安装程序加以切割的功能。例如:当你想将一个不算小的程 序放在网上供人下载的话, 就使用此功能将其切割成一个个较小的安装文件, 使网络下载更 方便。 INF-Tool 还可为你的程序自动将快捷方式建在桌面上, 如果要安装的文件是给 NT 使用的话, 还可以决定要将文件快捷方式连至 All user 或者是 Defalut user 的快捷方式中。 制作 INF 安装程序 Step by Step 启动 INF-Tool 后显示其程序功能视窗,其中包括 8 个主要标签页,分别标以 1 至 8 的 序号。说明如下: 标签 1: Project information(图 1)在本页中应填写你的应用软件的名称、你的姓名、注册表中的注册码等等。其中有 *号 的是必须填写的项目。 标签 2: Files to install(图 2) 安装文件列表,即指定你要安装哪些文件。 标签 3: Destination(图 3)安装目录。为这些文件指明安装目录,预设为 Windows 安装目录。 标签 4: Modify Registry(图 4)修改注册表文件。你可以为自己的程序在注册表中添加一些特殊的信息。 标签 5: Shortcuts(图 5) 建立一个程序的快捷方式。 标签 6: Modify System(图 6)修改系统。你还可以修改一下 Autoexec.bat 或 Config.sys 等系统文件。 标签 7: Dialogs(图 7) 对话框。在安装开始和结束时显示的对话窗口,这些都是可选的操作。 标签 8: Distribute(图 8)分发文件。在本页中按一下 “ Generate package now” 按钮即可创建分包文件。 设定完成以上 8 个标签,你的一个 INF 安装程序就大功告成了,感觉如何?很简单吧! 其他: INF-Tool 同时会产生一段反删除(Uninstall) 的脚本,让你轻松加入反删除功能。另外, 5.3c 版本中还加入了对中文(简体 /繁体) 的支持,只要你在其网站下载 INF-Tool Language Pack 多语支持,就能够使用亲切的中文化界面了。
安装信息 INF 文件与 Windows 内建的安装服务引擎(API 函数库)紧密协同工作, 基于其严格的编写语法制作而成的 INF 文件在拷贝、 删除文件, 增、 删注册表键, ...inf文件的制作_IT/计算机_专业资料。自动运行光盘的制作 制作 AUTO-CD 的关键就是如何编写自动运行信息文件 Autorun.inf, 它是 AUTO-CD 所必须 的。这个文件的主...INF 文件是由标准的 ASCII 码组成,您可以用任何一款文字编辑器查 看修改其中的内容。一般我们总是认为 INF 文件是系统设备的驱动程序,其实这是错误的 认识,...Inf Inf 文件的任务 问一下驱动程序的编写者&什么是写一个 Windows 设备驱动最糟糕的部分?&大多数的回答 是,&写一个.Inf 文件&这个原因是 DDK 关于.INF ...USB INF文件详解(USB)_信息与通信_工程科技_专业资料。USB INF文件的编写今日推荐 81份文档
笑话大全集 笑话大全爆笑版 幽默笑话大全 全球冷笑话精选80份文档 家...INF 文件是由标 准的 ASCII 码组成,可以用任何一款文字编辑器查看或修改其中的内容。INF 文件功能非常强大, 几乎能完成日常操作的所有功能, 可以把它看成是 ...INF 文件格式详解 常见 autorun.inf 病毒文件结构 展开 编辑本段 INF 简介 一般我们总是认为 INF 文件是系统设备的驱动程序,其实这是错误的 认识,Windows 之所以...请大家注意: 保存的文件名必须是“AutoRun.inf”, 编制好的 Autorun.inf 文件和图标文件一定要放 在硬盘根目录下。更进一步,如果你的某个硬盘内容暂时比较固定的...解剖 INF 文件的结构 INF 文件其实是一种纯文本文件, 可以用任意一款文本编辑软件来打开进行编辑, 如: 记事本、写字板等。INF 文件有一整套的编写规则,每一个 ...AutoRun.inf 完全教程 5页 免费 autorun.inf怎么删除 2页 免费 autorun.inf详解 6页 免费 autorun.inf文件 8页 1财富值 autorun.inf文件编写 8页 免费喜欢...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 fl studio注册表文件 的文章

 

随机推荐