複製鏈接
請複製以下鏈接發送給好友

INF

鎖定
INF是Device INFormation File的英文縮寫,是Microsoft公司為硬件設備製造商發佈其驅動程序推出的一種文件格式,是Windows操作系統下用來描述設備或文件等數據信息的文件。INF文件是由標準的ASCII碼組成,可以用任何一款文字編輯器查看修改其中的內容。
中文名
設備信息文件
外文名
Device INFormation File
縮    寫
INF
開發公司
Microsoft公司
平    台
Windows操作系統
組    成
標準的ASCII碼

INFINF簡介

一般我們總是認為INF文件是系統設備的驅動程序,其實這是錯誤的認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因為INF文件為該設備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看着説明書安裝電腦硬件一樣,我們就是Windows系統,説明書就是INF文件。INF文件功能非常強大,幾乎能完成日常操作的所有功能。源文件在哪裏、安裝到哪一個文件夾中、怎樣在註冊表中加入自身相關信息等等。 安裝監視器、調制解調器和打印機等設備所需的驅動程序,都是通過INF文件,正是INF的功勞才使得Windows可以找到這些硬件設備的驅動並正確安裝。當我們通過“開始→控制面板→添加刪除程序→Windows安裝程序”來添加系統組件的時候,INF文件將會自動調用。而在其他場合下,則需要在INF文件上點擊鼠標右鍵,然後選擇“安裝”,你才能順利安裝應用程序。
在C:/Windows/INF文件夾中存放有大量的INF文件。該文件夾一般處在隱含狀態,如果你想查看該文件夾,可選擇“查看→文件夾選項→查看”,然後在“文件和文件夾”選項下選擇“顯示所有文件”。

INF數學符號

inf,表示下確界,英文名infimum。
對於函數y=f(x),在使f(x)大於等於M成立的所有常數M中,我們把M的最大值max(M)(即函數y=f(x)的最小值)叫做函數y=f(x)的下確界。
下確界:在所有那些下界中如果有一個最大的下界,就稱之為M的下確界。

INFINF規則

INF文件其實是一種純文本文件,可以用任意一款文本編輯軟件來打開進行編輯,如:記事本、寫字板等。INF文件有一整套的編寫規則,每一個INF文件都是嚴格按照這些規則來編寫的。

INF規則一

INF文件是分節的,每一個INF文件有許多的節組成,節名用方括號括起來。節與節之間沒有先後順序的區別,另外,同一個INF文件中如果出現兩個同樣的節名,則系統會自動將這兩個節名下面的條目合併到一起。

INF規則二

在節與節之間的內容叫條目,每一個節又是由許多的條目組成的,每一個條目都是由形如“signature="$CHICAGO$"”的形式組成的。如果每一個條目的等號後有多個值,則每一個值之間用“,”號分隔開。

INF規則三

INF文件對大小寫不敏感。

INF規則四

“;”號後面的內容為註釋。

INF規則五

如果一個條目的內容過多,在一行無法書寫完全,則用“\”將一行內容書寫為多行。

INFINF結構

明白了INF文件的規則後,讓我們一起來解剖INF文件的結構。
1.Version節
每一個INF文件都包含一個這樣的節,該節中的條目主要是描述此INF文件支持的設備類型和適用的操作系統。在該節中如果出現“signature="$CHICAGO$"”這樣的條目則表示該INF文件適用於Windows 98之後的所有操作系統,如果包含“signature="$Windows NT$"”這樣的條目則表示該INF文件適用於Windows 2000/XP/2003操作系統,而且兩者必具其一。
另外,該節中“CLASS”條目很重要,它表明了設備的類型,常見的類型有:Display(顯示設備,如顯卡)、Media(多媒體設備,如聲卡)、Net(網絡設備,通常是網卡)、Modem(調制解調器)、Printer(打印設備)、Image(圖像捕獲設備,如攝像頭)。
2.Manufacturer節
該節中的條目主要是描述INF文件可以識別的所有硬件設備,其中包含有設備的生產廠家,以便設備的正確安裝。如“%ATi%=ATi”指明設備的生產商為“ATi”,這個大家都不會陌生吧,是顯卡的生產商。
3.SourceDisksNames節
該節主要指明安裝文件所在的介質。如:“1="ATi Drivers Release CD"”表明所有驅動程序都在零售版的CD盤上。
4.SourceDiskFiles節
驅動程序文件列表及被安裝的位置,該節必須結合[SourceDisksNames]節才能知道具體的位置。如“atinbtxx.sys=1”,則你必須到[SourceDisksNames]節去查看“1”具體代表那個位置。
5.DestinationDirs節
INF文件會指示安裝程序在安裝的過程中,將一些文件複製到硬盤上,或者將硬盤上的一些文件刪除、重命名等。該節即指定了為實現上述目的的文件所在的目的路徑。
6.Defaultinstall節和Install節
在這一節中描述了設備驅動程序與硬件設備的實際屬性。默認情況下,首先執行[DefaultInstall]節,該節指定了要複製或刪除的文件,註冊表的更新,INF文件的更新等等信息,同時又包含指向其他節的指針
7.String節
這一節中定義了字符串變量,當某些字符串頻繁地出現在INF文件中,為簡化輸入,可以在該節中定義一個字符串變量,代表該字符串出現在INF文件中。
8.MATLAB中的Inf
圖1 圖1
在MATLAB中Inf表示無窮大(MATLAB中的最小的數為eps)。例如,在MATLAB的命令窗口中輸入:
1/0
則運算結果為Inf。見圖1所示:
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

INF應用實例

下面讓我們以ATi顯卡的用於Windows XP的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 這個參數用來設置備份文件存放的目錄,默認存放目錄為Windows\Sysbckup,注意這裏填寫的必須是完整路徑。
(6)Files 在“Scanreg.ini”的最後有如下注釋內容“;Files=[dir code,]file1,file2,file3”,默認情況下,註冊表檢查程序創建註冊表備份文件時,會將“system.dat”、“system.ini”、“user.dat”和“win.ini”四個文件保存在“cab”壓縮文件中,如果你需要將其他重要的系統配置文件添加到此壓縮文件中,可在“Files=”後面輸入“[目錄代碼],文件名1,文件名2,文件名3”,文件名之間以逗號相隔,目錄代碼含義如下:
10 代表C:\Windows目錄
11 代表C:\Windows\System目錄
30 代表C盤根目錄
31 代表Windows系統所在盤的根目錄
例如要把Autoexec.bat和Config.sys兩個文件放到備份文件中,可設置參數為“File=30,config.sys,autoexec.bat”。
3.硬盤(U盤)也需個性化
第一:給硬盤(U盤)DIY一個可愛的圖標
我們首先將硬盤的生硬圖標替換為我們喜歡的圖標,給硬盤披上美麗的綵衣。首先準備一圖標文件,你可以用圖標製作程序製作自己的圖標文件,也可以使用現成的圖標文件,最好是保存到硬盤某一個分區的根目錄下。接着打開記事本程序,錄入以下內容:
[autorun]
ICON=******.ICO
其中“******”是圖標文件的路徑及圖標文件名,請自行修改為具體的圖標文件的路徑及圖標文件名。錄入完畢,另存為“Autorun.inf”,並將其剪切到某一個你欲扮酷的分區的根目錄下。
第二:讓硬盤能歌善舞
想不想當你雙擊了硬盤分區或是點右鍵選擇右鍵菜單中的“自動播放”之後,如圖3所示,就自動打開音樂播放程序,開始播放音樂文件,讓動聽的音樂時刻環繞在你的左右。心動了吧,其實十分簡單,Come On。
接着在“Autorun.inf”文件中錄入以下內容:
OPEN=D:\Program Files\foobar2000\
foobar2000.exe d:\qs.fpl
其中“D:\Program Files\foobar2000\
foobar2000.exe”是筆者喜愛的播放器Foobar2000的具體位置,如果你用的是Winamp或其它的播放器,請替換為具體的播放器所在的位置,“d:\qs.fpl”是Foobar2000播放器的播放列表文件,你也可以替換為某一個具體的音樂文件所在的路徑。如果你用的是Winamp則播放列表文件應是“*.m3u”。 利用此方法也可以設置當雙擊硬盤分區時自動播放影視文件。
4.無人值守安裝Windows 98
在Windows 98安裝光盤中有一個Batch工具,可以製作用於無人值守安裝的腳本,即生成一個包含安裝Windows 98時需要和安裝嚮導進行交互的各種信息的INF文件——Msbatch.inf。
首先找到位於Windows 98安裝光盤“/tools /reskit/batch”目錄中的“setup”程序圖標安裝Batch98工具。
接着,運行Batch工具,按照嚮導提示生成“msbatch.inf”文件,並將該文件保存到軟盤中。具體的生成方法請參考有關資料,這裏不再贅述。
當需要重新安裝Windows 98時,用啓動盤進入到DOS提示符下,將保存有“msbatch.inf”文件的軟盤插入軟驅,將Windows 98安裝光盤插入光驅,在DOS提示符後鍵入如下命令:“x:/win98/setup a:msbatch.inf”,回車後即可。其中“X”為光驅和盤符。
5.將屏保請進右鍵菜單
當我們有事暫時離開一會兒,利用設有密碼的屏幕保護程序可以保護我們當前的操作不被他人偷看。但是,在默認的設置中,屏幕保護程序最快也要在1分鐘以後才能夠啓動,那麼怎樣才能快速激活屏幕保護程序呢?
最常見的方法是在桌面上建立一個啓動屏保的快捷方式,在需要時雙擊即可啓動。另外,我們還可以將屏保請進右鍵菜單!
第一步:打開記事本程序,錄入以下內容:
[version]
signature=”$chicago$”
[defaultinstall]
AddReg=AddMe
[AddMe]
HKCR,"CLSID\\shell\pingbao",,,"屏幕保護"
HKCR,"CLSID\\shell\pingbao\COMMAND",,,"ssstars.scr /S "%1""
錄入完畢,經檢查無誤後,另存為“PingBao.inf”,文件名可任取,擴展名必須是INF。
第二步:在“PingBao.inf”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”。
第三步:當需要運行屏幕保護的時候,回到桌面上,在“我的電腦”圖標上點擊右鍵選擇“屏幕保護”選項。點擊一下試試,是不是立即啓動屏幕保護程序了。
注意:其中的“ssstars.scr”為欲啓動的屏幕保護程序的文件名,請用你喜歡的屏幕保護程序文件來替換;如果你點選右鍵菜單中的“屏幕保護”選項後,沒有反應即沒有啓動屏幕保護程序,請將文中的“/S "%1"”修改為“"%1" /S”即可。

INF文件格式

INF 文件必須包含以下規則:
1.節( Sections )開始於由中括號 ([]) 擴起來的節名
2.必須包含版本信息節以表明自己屬於 win95 還是 winnt4 格式。
3.值 (Value) 由 %strkey% 替代的表達式字符串表達組成, strkey 必須在 strings 節中定義。如果出現 % ,則用 %% 替代。
Setup 程序使用以下各節 :
[Version]
必須包含在 INF 文件中,表明 inf 文件格式
[Version]
Signature="signature-name"
Class=class-name
Signature-name
參數可以取值 $Windows NT$, $Chicago$, or $Windows 95$ (引號括起來) . 如果不是以上這些字符串,則不被認可為 inf 文件。
Class-name
此參數用於安裝設備驅動。詳細信息見 DDK Programmer's Guide.
GUID
此參數用於安裝設備驅動。詳細信息見 DDK Programmer's Guide.
INF-creator
標示 INF 的創建者 . 典型的情況,此值為 inf 文件的創建者所在組織
filename.inf
INF 文件必須包含 SourceDisksFiles 和 SourceDisksNames 節。這些文件的描述文件通常命名為 LAYOUT.INF. 如果文件名不是特別指定, SourceDisksNames 和 SourceDisksFiles 必須出現在當前 inf 文件中
以下為典型的例子:
[Version]
Signature="$Windows NT$"
Class=Mouse
ClassGUID={4D36E96F-E325-11CE-BFC1-08002BE10318}
Provider=%Provider%
LayoutFile=layout.inf
[Strings]
Provider="Corporation X"
[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 條目。詳見 DDK Programmer's Guide.
CopyFiles 條目中可以包含特殊字符 @ 以直接拷貝一個單一文件。文件將拷貝到 DefaultDestDir, DestinationDirs 節包含了 DefaultDestDir 的描述。
例子:
[MyInstall]
CopyFiles= @MyFile.exe
此文件將拷貝到缺省目標目錄。
為適應不同平台,可以在 install 節後加上不同的後綴。可以出現 defaultInstall.nt 這樣的節名。 install-section-name 可選的後綴:
Extension Platform
.Win Windows 95
.NT Windows NT (all platforms)
.NTx86 Windows NT (x86 only)
.NTMIPS Windows NT (MIPS only)
.NTAlpha Windows NT (Alpha only)
.NTPPC Windows NT (PowerPC only)
以下例子展示瞭如何出現兩個 copyfiles 節:
[Ser_Inst]
CopyFiles=Ser_CopyFiles, mouclass_CopyFiles
[Ser_CopyFiles]
sermouse.sys
[mouclass_CopyFiles]
mouclass.sys
[Add Registry]
描述如何增加註冊表項目。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 註冊表的根名:
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
HKR 相關於 SetupInstallFromInfSection. 節中指定的值
subkey
可選,例如 key1\key2\key3....
value-name
可選,標示 subkey 的值名稱。對於字符串類型可以空,標示缺省字符串值
flag值類型的標示
FLG_ADDREG_BINVALUETYPE The value is "raw" data.
FLG_ADDREG_NOCLOBBER 如果註冊表中出現不要覆蓋此值 .
FLG_ADDREG_DELVAL 從註冊表中刪除此鍵
FLG_ADDREG_APPEND 追加一個值到已存值中,僅僅支持 REG_MULTI_SZ 值
FLG_ADDREG_TYPE_MASK Mask.
FLG_ADDREG_TYPE_SZ REG_SZ 類型
FLG_ADDREG_TYPE_MULTI_SZ REG_MULTI_SZ.
FLG_ADDREG_TYPE_EXPAND_SZ REG_EXPAND_SZ.
FLG_ADDREG_TYPE_BINARY REG_BINARY.
FLG_ADDREG_TYPE_DWORD REG_DWORD.
FLG_ADDREG_TYPE_NONE REG_NONE.
Windows 95 安裝程序將視擴展數據類型為 REG_SZ or REG_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)
替換目標文件
[delete Registry]描述如何增加註冊表項目。
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 註冊表的根名:
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
HKR 相關於 SetupInstallFromInfSection. 節中指定的值
subkey
value-name
可選,標示 subkey 的值名稱。對於字符串類型可以空,標示缺省字符串值
[Delete Files] 此節指定需要被刪除的文件 , 節名必須出現在 install 中的 delfiles 條目中
[file-list-section]
file-name[,,,flag]
flag
可選。
DELFLG_IN_USE (0x00000001)
當因為文件正被使用, SetupCommitFileQueue 取消 , 將排隊在系統重新啓動時候被刪除。
如果不使用此值,則安裝時候被使用的文件不會被 delete files 指定節刪除
DELFLG_IN_USE1 (0x00010000)
高字節版本的 DELFLG_IN_USE. Setting DELFLG_IN_USE1 差別在於同樣可適用於 Copyfiles 節和 delete Files 節即使 COPYFLG_WARN_IF_SKIP 標誌被使用。
此節指示那些 ini 文件中的條目將對應到註冊表。
ini-file, ini-section, ,reg-root-string,subkey[,flags]
ini-file :ini 文件名 .
ini-section : ini 文件的節
ini-key : 條目
flags : 指示當註冊表存在對應的註冊表項目是否是否覆蓋舊值。
Bit value
0 0 缺省,不刪除 ini 文件項目,當 ini 轉移到註冊表後
0 1 刪除 ini 文件中的項目,當 ini 轉移到註冊表後
1 0 缺省,當註冊表存在此子項,則不覆蓋
1 1 覆蓋
[Rename Files]此類型節列出那些將要改名的文件。此節名必須出現在 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 可選命令標誌 .
Value Meaning
0 缺省。如果 old-ini-entry key 出現在 INI file 條目中 , 將被 new-ini-entry 替換。 值會被忽略,只要 key 匹配即可。為無條件增加新條目到 ini 文件,可設置 old-ini-entry 為 NULL 。 為無條件從 ini 文件中刪除 old-ini-entry from ,設置 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 ; Port Driver
AddService = mouclass,, mouclass_Service_Inst, mouclass_EventLog_Inst
; Class Driver
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, primary disk, and so forth.
+depend-on-group-name
可選,服務依賴的服務組,服務僅當該組的最後一個服務都啓動後才啓動
depend-on-service-name
可選。依賴的服務。
driver-object-name
可選。如果類型屬於 Kernel driver 或者 file system driver, ,此名用於 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 = Pointer Class
[DestinationDirs]此節用於指定( copy file ,rename file 等節中的目標目錄)
[DestinationDirs]
file-list-section=drid[,subdir]
. .
[DefaultDestDir=drid[,subdir]]
file-list-section
Copy Files, Rename Files, 或者 Delete Files 節名 . drid
目錄標示 (DRID) 。 安裝程序在安裝期間替換一個 DIRID 採用實際的目錄
DIRID %dirid% 為預先定義的目錄
DIRID 可為以下值:
-01,0xffff 目錄
01 SourceDrive:\path.
10 Windows directory.
11 System directory. (%windir%\system on Windows 95, %windir%\system32 on Windows NT)
12 Drivers directory.(%windir%\system32\drivers on Windows NT)
18 help 目錄
20 Fonts directory.
21 察看器目錄
24 應用程序目錄
25 共享目錄 Shared directory.
30 啓動驅動器的根目錄 Root directory of the boot drive.
50 %windir%\system
51 假脱機目錄 Spool directory.
52 Spool drivers directory.
53 用户 Profile 目錄
54 ntldr or OSLOADER.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 = "Windows NT CD-ROM", Instd1,, \common
[SourceDisksNames.Alpha]
2 = "Windows NT CD-ROM", Instd1,, \alpha
[SourceDisksNames.Mips]
2 = "Windows NT CD-ROM", Instd1,, \mips
[SourceDisksNames.x86]
2 = "Windows NT CD-ROM", Instd1,, \x86
[SourceDisksNames.ppc]
2 = "Windows NT CD-ROM", Instd1,, \ppc
[SourceDisksFiles]
cmd.exe = 2
[SourceDisksFiles.Mips]
halnecmp.dll = 2
[EventLog Install]該節往註冊表中加入事件消息文件,也可利用此節移除事件消息文件。
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%%\System32\IoLogMsg.dll\;%%SystemRoot%%\System32\drivers\sermouse.sys"
HKR,,TypesSupported,0x00010001,7
[Strings]該節定義了 1 個或多個字符串關鍵字 . 一個字符串 key 展開一個可打印字符串
可以有針對特定語言的 String 節
[Strings[.langid]]
strings-key=value
langid
可選的指示 string 節所屬語言的語言標示符 . 舉例 , U.S. English 是 0409 以及 Standard French 是 040c.
strings-key
由字符和數字組成的唯一名符
value
展開後的字符串內容
例子:
[Strings]
String0="Corporation X"
String1="Corporation X"
String2="CS2590 SCSI Adapter"
特定語言的例子:
[Strings.0409]
; American English strings
S1 = "Hello"
[Strings.0009]
; British English strings
; Note that 0009 is used instead of 0809 to make this the default
; for English languages other than U.S. English.
S1 = "Greetings"
[Strings]
; French strings
; Not specifying a langid makes this the default
S1 = "Bonjour"
註釋
儘管此節通常處於 inf 文件的最後一節,但是定義的字符串 Key 可用於 inf 文件任何位置。安裝程序將展開字符串
如果用到 %, 請使用 %% 。
Windows 95: 不可包含 strings 節,不支持多語言

INF病毒文件

[AutoRun]
//表示AutoRun部分開始
Icon=X:\“圖標”.ico
//給X盤一個圖標
Open=X:\“程序”.exe或者“命令行”
//雙擊X盤執行的程序或命令
shell\“關鍵字”=“鼠標右鍵菜單中加入顯示的內容”
//右鍵菜單新增選項
shell\“關鍵字”\command=“要執行的文件或命令行”
//選中右鍵菜單新增選項執行的程序或者命令