簡介
一般我們總是認為INF文件是系統設備的驅動程序,其實這是錯誤的認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因為INF文件為該設備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看着說明書安裝電腦硬件一樣,我們就是Windows系統,說明書就是INF文件。INF文件功能非常強大,幾乎能完成日常操作的所有功能。源文件在哪裡、安裝到哪一個文件夾中、怎樣在注冊表中加入自身相關信息等等。
安裝監視器、調制解調器和打印機等設備所需的驅動程序,都是通過INF文件,正是INF的功勞才使得Windows可以找到這些硬件設備的驅動并正确安裝。當我們通過“開始→控制面闆→添加删除程序→Windows安裝程序”來添加系統組件的時候,INF文件将會自動調用。而在其他場合下,則需要在INF文件上點擊鼠标右鍵,然後選擇“安裝”,你才能順利安裝應用程序。
在C:/Windows/INF文件夾中存放有大量的INF文件。該文件夾一般處在隐含狀态,如果你想查看該文件夾,可選擇“查看→文件夾選項→查看”,然後在“文件和文件夾”選項下選擇“顯示所有文件”。
數學符号
inf,表示下确界,英文名infimum。
對于函數y=f(x),在使f(x)大于等于M成立的所有常數M中,我們把M的最大值max(M)(即函數y=f(x)的最小值)叫做函數y=f(x)的下确界。
下确界:在所有那些下界中如果有一個最大的下界,就稱之為M的下确界。
結構
明白了INF文件的規則後,讓我們一起來解剖INF文件的結構。
1.Version節
每一個INF文件都包含一個這樣的節,該節中的條目主要是描述此INF文件支持的設備類型和适用的操作系統。在該節中如果出現“signature="$CHICAGOquot;”這樣的條目則表示該INF文件适用于Windows98之後的所有操作系統,如果包含“signature="$WindowsNTquot;”這樣的條目則表示該INF文件适用于Windows2000/XP/2003操作系統,而且兩者必具其一。
另外,該節中“CLASS”條目很重要,它表明了設備的類型,常見的類型有:Display(顯示設備,如顯卡)、Media(多媒體設備,如聲卡)、Net(網絡設備,通常是網卡)、Modem(調制解調器)、Printer(打印設備)、Image(圖像捕獲設備,如攝像頭)。
2.Manufacturer節
該節中的條目主要是描述INF文件可以識别的所有硬件設備,其中包含有設備的生産廠家,以便設備的正确安裝。如“%ATi%=ATi”指明設備的生産商為“ATi”,這個大家都不會陌生吧,是顯卡的生産商。
3.SourceDisksNames節
該節主要指明安裝文件所在的介質。如:“1="ATiDriversReleaseCD"”表明所有驅動程序都在零售版的CD盤上。
4.SourceDiskFiles節
驅動程序文件列表及被安裝的位置,該節必須結合[SourceDisksNames]節才能知道具體的位置。如“atinbtxx.sys=1”,則你必須到[SourceDisksNames]節去查看“1”具體代表那個位置。
5.DestinationDirs節
INF文件會指示安裝程序在安裝的過程中,将一些文件複制到硬盤上,或者将硬盤上的一些文件删除、重命名等。該節即指定了為實現上述目的的文件所在的目的路徑。
6.Defaultinstall節和Install節
在這一節中描述了設備驅動程序與硬件設備的實際屬性。默認情況下,首先執行[DefaultInstall]節,該節指定了要複制或删除的文件,注冊表的更新,INF文件的更新等等信息,同時又包含指向其他節的指針。
7.String節
這一節中定義了字符串變量,當某些字符串頻繁地出現在INF文件中,為簡化輸入,可以在該節中定義一個字符串變量,代表該字符串出現在INF文件中。
8.MATLAB中的Inf
在MATLAB中Inf表示無窮大(MATLAB中的最小的數為eps)。
例如,在MATLAB的命令窗口中輸入:
1/0
則運算結果為Inf。見右圖:
INF返回正無窮大的IEEE算術表示。被零除溢出,從而導緻結果作為傳統的浮點值太大,而導緻操作無限的結果
INF(“double”)是與INF沒有輸入結果相同。
INF(“single”)是表示單精度的INF。
INF(N)N-n矩陣的INFS。
INF(M,N)或INF([M,N])表示M*n的矩INFS陣。
例子1/0,1.e1000,2^2000,和exp(1000)都産生INF。
log(0)也産生INF
應用實例
下面讓我們以ATi顯卡的用于WindowsXP的WDM驅動程序為例來說明一下INF文件的具體含義,由于INF文件往往很長,為了說明方便,我們删除了一些大部分的信息,僅保留一個INF文件的結構示。
光說不練不行,下面讓我們來看幾個INF文件的典型應用。
1.打開“鎖”定的注冊表
第一步:打開記事本程序,輸入以下内容:
[version]
signature=”$chicago$”
[defaultinstall]
delReg=DeleteMe
輸入完畢,另存為UNLOCK.INF,名字任取,擴展名必須是INF
第二步:在“UNLOCK.INF”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”,如圖2所示,被鎖的注冊表即會應聲而開。
2.巧妙利用INF文件自動備份重要的文件
大家都知道,注冊表是Windows操作系統的命根子,因此,系統啟動時會自動運行注冊表檢查程序,自動更新備份注冊表文件。在系統盤的Windows目錄中有一個“Scanreg.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這個參數用來設置備份文件存放的目錄,默認存放目錄為WindowsSysbckup,注意這裡填寫的必須是完整路徑。
(6)Files在“Scanreg.ini”的最後有如下注釋内容“;Files=[dircode,]file1,file2,file3”,默認情況下,注冊表檢查程序創建注冊表備份文件時,會将“system.dat”、“system.ini”、“user.dat”和“win.ini”四個文件保存在“cab”壓縮文件中,如果你需要将其他重要的系統配置文件添加到此壓縮文件中,可在“Files=”後面輸入“[目錄代碼],文件名1,文件名2,文件名3”,文件名之間以逗号相隔,目錄代碼含義如下:
10代表C:Windows目錄
11代表C:WindowsSystem目錄
30代表C盤根目錄
31代表Windows系統所在盤的根目錄
例如要把Autoexec.bat和Config.sys兩個文件放到備份文件中,可設置參數為“File=30,config.sys,autoexec.bat”。
3.硬盤(U盤)也需個性化
第一:給硬盤(U盤)DIY一個可愛的圖标
我們首先将硬盤的生硬圖标替換為我們喜歡的圖标,給硬盤披上美麗的彩衣。首先準備一圖标文件,你可以用圖标制作程序制作自己的圖标文件,也可以使用現成的圖标文件,最好是保存到硬盤某一個分區的根目錄下。接着打開記事本程序,錄入以下内容:
[autorun]
ICON=******.ICO
其中“******”是圖标文件的路徑及圖标文件名,請自行修改為具體的圖标文件的路徑及圖标文件名。錄入完畢,另存為“Autorun.inf”,并将其剪切到某一個你欲扮酷的分區的根目錄下。
第二:讓硬盤能歌善舞
想不想當你雙擊了硬盤分區或是點右鍵選擇右鍵菜單中的“自動播放”之後,如圖3所示,就自動打開音樂播放程序,開始播放音樂文件,讓動聽的音樂時刻環繞在你的左右。心動了吧,其實十分簡單,ComeOn。
接着在“Autorun.inf”文件中錄入以下内容:
OPEN=D:ProgramFilesfoobar2000
foobar2000.exed:qs.fpl
其中“D:ProgramFilesfoobar2000
foobar2000.exe”是筆者喜愛的播放器Foobar2000的具體位置,如果你用的是Winamp或其它的播放器,請替換為具體的播放器所在的位置,“d:qs.fpl”是Foobar2000播放器的播放列表文件,你也可以替換為某一個具體的音樂文件所在的路徑。如果你用的是Winamp則播放列表文件應是“*.m3u”。利用此方法也可以設置當雙擊硬盤分區時自動播放影視文件。
4.無人值守安裝Windows98
在Windows98安裝光盤中有一個Batch工具,可以制作用于無人值守安裝的腳本,即生成一個包含安裝Windows98時需要和安裝向導進行交互的各種信息的INF文件——Msbatch.inf。
首先找到位于Windows98安裝光盤“/tools/reskit/batch”目錄中的“setup”程序圖标安裝Batch98工具。
接着,運行Batch工具,按照向導提示生成“msbatch.inf”文件,并将該文件保存到軟盤中。具體的生成方法請參考有關資料,這裡不再贅述。
當需要重新安裝Windows98時,用啟動盤進入到DOS提示符下,将保存有“msbatch.inf”文件的軟盤插入軟驅,将Windows98安裝光盤插入光驅,在DOS提示符後鍵入如下命令:“x:/win98/setupa:msbatch.inf”,回車後即可。其中“X”為光驅和盤符。
5.将屏保請進右鍵菜單
當我們有事暫時離開一會兒,利用設有密碼的屏幕保護程序可以保護我們當前的操作不被他人偷看。但是,在默認的設置中,屏幕保護程序最快也要在1分鐘以後才能夠啟動,那麼怎樣才能快速激活屏幕保護程序呢?
最常見的方法是在桌面上建立一個啟動屏保的快捷方式,在需要時雙擊即可啟動。另外,我們還可以将屏保請進右鍵菜單!
第一步:打開記事本程序,錄入以下内容:
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSIDshellpingbao",,,"屏幕保護"
HKCR,"CLSIDshellpingbaoCOMMAND",,,"ssstars.scr/S"%1""
錄入完畢,經檢查無誤後,另存為“PingBao.inf”,文件名可任取,擴展名必須是INF。
第二步:在“PingBao.inf”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”。
第三步:當需要運行屏幕保護的時候,回到桌面上,在“我的電腦”圖标上點擊右鍵選擇“屏幕保護”選項。點擊一下試試,是不是立即啟動屏幕保護程序了。
注意:其中的“ssstars.scr”為欲啟動的屏幕保護程序的文件名,請用你喜歡的屏幕保護程序文件來替換;如果你點選右鍵菜單中的“屏幕保護”選項後,沒有反應即沒有啟動屏幕保護程序,請将文中的“/S"%1"”修改為“"%1"/S”即可。
文件格式
INF文件必須包含以下規則:
1.節(Sections)開始于由中括号([])擴起來的節名
2.必須包含版本信息節以表明自己屬于win95還是winnt4格式。
3.值(Value)由%strkey%替代的表達式字符串表達組成,strkey必須在strings節中定義。如果出現%,則用%%替代。
Setup程序使用以下各節:
[Version]
必須包含在INF文件中,表明inf文件格式
[Version]
Signature="signature-name"
Class=class-name
Signature-name
參數可以取值$WindowsNT$,$Chicago$,or$Windows95$(引号括起來).如果不是以上這些字符串,則不被認可為inf文件。
Class-name
此參數用于安裝設備驅動。詳細信息見DDKProgrammer'sGuide.
GUID
此參數用于安裝設備驅動。詳細信息見DDKProgrammer'sGuide.
INF-creator
标示INF的創建者.典型的情況,此值為inf文件的創建者所在組織
filename.inf
INF文件必須包含SourceDisksFiles和SourceDisksNames節。這些文件的描述文件通常命名為LAYOUT.INF.如果文件名不是特别指定,SourceDisksNames和SourceDisksFiles必須出現在當前inf文件中
以下為典型的例子:
[Version]
Signature="$WindowsNTquot;
Class=Mouse
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}
Provider=%Provider%
LayoutFile=layout.inf
[Strings]
Provider="CorporationX"
[install]
此節指定包含的安裝指令節,每一個條目将會成為一節
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文件中的各節。CopyFiles則可例外(如果沒有任何文件被拷貝)。
如果安裝驅動程序,僅僅使用LogConfig條目。詳見DDKProgrammer'sGuide.
CopyFiles條目中可以包含特殊字符@以直接拷貝一個單一文件。文件将拷貝到DefaultDestDir,DestinationDirs節包含了DefaultDestDir的描述。
例子:
[MyInstall]
CopyFiles=@MyFile.exe
此文件将拷貝到缺省目标目錄。
為适應不同平台,可以在install節後加上不同的後綴。可以出現defaultInstall.nt這樣的節名。install-section-name可選的後綴:
ExtensionPlatform
.WinWindows95
.NTWindowsNT(allplatforms)
.NTx86WindowsNT(x86only)
.NTMIPSWindowsNT(MIPSonly)
.NTAlphaWindowsNT(Alphaonly)
.NTPPCWindowsNT(PowerPConly)
以下例子展示了如何出現兩個copyfiles節:
[Ser_Inst]
CopyFiles=Ser_CopyFiles,mouclass_CopyFiles
[Ser_CopyFiles]
sermouse.sys
[mouclass_CopyFiles]
mouclass.sys
[AddRegistry]
描述如何增加注冊表項目。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注冊表的根名:
HKCRHKEY_CLASSES_ROOT.
HKCUHKEY_CURRENT_USER.
HKLMHKEY_LOCAL_MACHINE.
HKUHKEY_USERS.
HKR相關于SetupInstallFromInfSection.節中指定的值
subkey
可選,例如key1key2key3....
value-name
可選,标示subkey的值名稱。對于字符串類型可以空,标示缺省字符串值
flag值類型的标示
FLG_ADDREG_BINVALUETYPEThevalueis"raw"data.
FLG_ADDREG_NOCLOBBER如果注冊表中出現不要複蓋此值.
FLG_ADDREG_DELVAL從注冊表中删除此鍵
FLG_ADDREG_APPEND追加一個值到已存值中,僅僅支持REG_MULTI_SZ值
FLG_ADDREG_TYPE_MASKMask.
FLG_ADDREG_TYPE_SZREG_SZ類型
FLG_ADDREG_TYPE_MULTI_SZREG_MULTI_SZ.
FLG_ADDREG_TYPE_EXPAND_SZREG_EXPAND_SZ.
FLG_ADDREG_TYPE_BINARYREG_BINARY.
FLG_ADDREG_TYPE_DWORDREG_DWORD.
FLG_ADDREG_TYPE_NONEREG_NONE.
Windows95安裝程序将視擴展數據類型為REG_SZorREG_BINARY.
value
可選.16進值或者字符串
[CopyFiles]
[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)
替換目标文件
[deleteRegistry]描述如何增加注冊表項目。
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注冊表的根名:
HKCRHKEY_CLASSES_ROOT.
HKCUHKEY_CURRENT_USER.
HKLMHKEY_LOCAL_MACHINE.
HKUHKEY_USERS.
HKR相關于SetupInstallFromInfSection.節中指定的值
subkey
value-name
可選,标示subkey的值名稱。對于字符串類型可以空,标示缺省字符串值
[DeleteFiles]此節指定需要被删除的文件,節名必須出現在install中的delfiles條目中
[file-list-section]
file-name[,,,flag]
flag
可選。
DELFLG_IN_USE(0x00000001)
當因為文件正被使用,SetupCommitFileQueue取消,将排隊在系統重新啟動時候被删除。
如果不使用此值,則安裝時候被使用的文件不會被deletefiles指定節删除
DELFLG_IN_USE1(0x00010000)
高字節版本的DELFLG_IN_USE.SettingDELFLG_IN_USE1差别在于同樣可适用于Copyfiles節和deleteFiles節即使COPYFLG_WARN_IF_SKIP标志被使用。
此節指示那些ini文件中的條目将對應到注冊表。
ini-file,ini-section,,reg-root-string,subkey[,flags]
ini-file:ini文件名.
ini-section:ini文件的節
ini-key:條目
flags:指示當注冊表存在對應的注冊表項目是否是否複蓋舊值。
Bitvalue
00缺省,不删除ini文件項目,當ini轉移到注冊表後
01删除ini文件中的項目,當ini轉移到注冊表後
10缺省,當注冊表存在此子項,則不複蓋
11複蓋
[RenameFiles]此類型節列出那些将要改名的文件。此節名必須出現在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]
參數說明見上
[update-ini-section-name]
此節删除、替換或者新增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可選命令标志.
ValueMeaning
0缺省。如果old-ini-entrykey出現在INIfile條目中,将被new-ini-entry替換。值會被忽略,隻要key匹配即可。為無條件增加新條目到ini文件,可設置old-ini-entry為NULL。為無條件從ini文件中删除old-ini-entryfrom,設置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.ini表示CARD.INI存在于System32目錄中。
以下為例子:
%11%sample.ini,Section1,,Value1=2;新增一個條目
%11%sample.ini,Section2,Value3=*,;删除老條目
%11%sample.ini,Section4,Value5=1,Value5=4;替換老條目
[Services]
[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_EventLog_Inst;PortDriver
AddService=mouclass,,mouclass_Service_Inst,mouclass_EventLog_Inst
;ClassDriver
service-install-section
service-install-section此節列出将要安裝的每一個服務信息
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)
如果驅動裝載失敗,啟動失敗。如果啟動不是在“最後一次正确(LastKnownGood.)”控制集,切換到LastKnownGood。如果啟動試圖用于LastKnownGood,運行故障檢查例程
SEVERE(0x2)如果啟動不是用于LastKnownGood,切換到LastKnownGood。如果啟動試圖LastKnownGood,發生錯誤時繼續啟動。
NORMAL(0x1)若初始化時失敗,啟動将繼續,但顯示警告信息
IGNORE(0x0)若初始化時失敗,啟動将繼續,無警告信息
path二進制文件路徑
load-order-group-name
可選.指示服務處在的服務組中的次序:pointer,port,primarydisk,andsoforth.
+depend-on-group-name
可選,服務依賴的服務組,服務僅當該組的最後一個服務都啟動後才啟動
depend-on-service-name
可選。依賴的服務。
driver-object-name
可選。如果類型屬于Kerneldriver或者filesystemdriver,,此名用于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=PointerClass
[DestinationDirs]此節用于指定(copyfile,renamefile等節中的目标目錄)
[DestinationDirs]
file-list-section=drid[,subdir]
..
[DefaultDestDir=drid[,subdir]]
file-list-section
CopyFiles,RenameFiles,或者DeleteFiles節名.drid
目錄标示(DRID)。安裝程序在安裝期間替換一個DIRID采用實際的目錄
DIRID%dirid%為預先定義的目錄
DIRID可為以下值:
-01,0xffff目錄
01SourceDrive:path.
10Windowsdirectory.
11Systemdirectory.(%windir%systemonWindows95,%windir%system32onWindowsNT)
12Driversdirectory.(%windir%system32driversonWindowsNT)
17INF文件目錄
18help目錄
20Fontsdirectory.
21察看器目錄
24應用程序目錄
25共享目錄Shareddirectory.
30啟動驅動器的根目錄Rootdirectoryofthebootdrive.
50%windir%system
51假脫機目錄Spooldirectory.
52Spooldriversdirectory.
53用戶Profile目錄
54ntldrorOSLOADER.EXE所在目錄
subdir
子目錄名
可選項DefaultDestDir提供缺省的目标目錄。如果DefaultDestDir未用于DestinationDirs節,缺省的目錄設為drid_system.
[SourceDisksFiles]此節指定源安裝盤上的文件
為了允許多操作系統分發源文件,你可構造針對特定平台的SourceDisksFiles節舉例來講,在MIPS平台上,所有安裝功能在用到SourceDisksFiles節将首先查找SourceDisksFiles.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文件特定于MIPS平台。
[SourceDisksNames]
1="WindowsNTCD-ROM",Instd1,,common
[SourceDisksNames.Alpha]
2="WindowsNTCD-ROM",Instd1,,alpha
[SourceDisksNames.Mips]
2="WindowsNTCD-ROM",Instd1,,mips
[SourceDisksNames.x86]
2="WindowsNTCD-ROM",Instd1,,x86
[SourceDisksNames.ppc]
2="WindowsNTCD-ROM",Instd1,,ppc
[SourceDisksFiles]
write.exe=1
cmd.exe=2
[SourceDisksFiles.Mips]
halnecmp.dll=2
[EventLogInstall]該節往注冊表中加入事件消息文件,也可利用此節移除事件消息文件。
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%%System32IoLogMsg.dll;%%SystemRoot%%System32driverssermouse.sys"
HKR,,TypesSupported,0x00010001,7
[Strings]該節定義了1個或多個字符串關鍵字.一個字符串key展開一個可打印字符串
可以有針對特定語言的String節
[Strings[.langid]]
strings-key=value
langid
可選的指示string節所屬語言的語言标示符.舉例,U.S.English是0409以及StandardFrench是040c.
strings-key
由字符和數字組成的唯一名符
value
展開後的字符串内容
例子:
[Strings]
String0="CorporationX"
String1="CorporationX"
String2="CS2590SCSIAdapter"
特定語言的例子:
[Strings.0409]
;AmericanEnglishstrings
S1="Hello"
[Strings.0009]
;BritishEnglishstrings
;Notethat0009isusedinsteadof0809tomakethisthedefault
;forEnglishlanguagesotherthanU.S.English.
S1="Greetings"
[Strings]
;Frenchstrings
;Notspecifyingalangidmakesthisthedefault
S1="Bonjour"
注釋
盡管此節通常處于inf文件的最後一節,但是定義的字符串Key可用于inf文件任何位置。安裝程序将展開字符串
如果用到%,請使用%%。
Windows95:不可包含strings節,不支持多語言