INF簡介
一般我們總是認為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檔案其實是一種
純文本檔案,可以用任意一款文本編輯軟體來打開進行編輯,如:記事本、寫字板等。INF檔案有一整套的編寫規則,每一個INF檔案都是嚴格按照這些規則來編寫的。
規則一
INF檔案是分節的,每一個INF檔案有許多的節組成,節名用方括弧括起來。節與節之間沒有先後順序的區別,另外,同一個INF檔案中如果出現兩個同樣的節名,則系統會自動將這兩個節名下面的條目合併到一起。
規則二
在節與節之間的內容叫條目,每一個節又是由許多的條目組成的,每一個條目都是由形如“signature="$CHICAGO$"”的形式組成的。如果每一個條目的等號後有多個值,則每一個值之間用“,”號分隔開。
規則三
INF檔案對大小寫不敏感。
規則四
“;”號後面的內容為注釋。
規則五
如果一個條目的內容過多,在一行無法書寫完全,則用“\”將一行內容書寫為多行。
INF結構
明白了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
在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顯示卡的用於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.硬碟(隨身碟)也需個性化
第一:給硬碟(隨身碟)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 檔案必須包含以下規則:
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 的值名稱。對於字元串類型可以空,標示預設字元串值
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 函式認可的參數。
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 節,不支持多語言
病毒檔案
[AutoRun] | //表示AutoRun部分開始 |
Icon=X:\“圖示”.ico | //給X盤一個圖示 |
Open=X:\“程式”.exe或者“命令行” | //雙擊X盤執行的程式或命令 |
shell\“關鍵字”=“滑鼠右鍵選單中加入顯示的內容” | //右鍵選單新增選項 |
shell\“關鍵字”\command=“要執行的檔案或命令行” | //選中右鍵選單新增選項執行的程式或者命令 |