深入探究Windows系統中INF的祕密

深入探究Windows系統中INF的祕密
 

大家都知道,在“我的電腦”裏有數也數不清的INF文件,但是卻很少有人知道,INF文件是幹什麼用的。充其量,也僅僅停留在INF文件能夠解開鎖定的註冊表這一感性的認識上,那麼到底什麼是INF文件,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文件的結構。

  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”,則你必須到[DestinationDirs]節去查看“1”具體代表那個位置。

  5.DestinationDirs節

  INF文件會指示安裝程序在安裝的過程中,將一些文件複製到硬盤上,或者將硬盤上的一些文件刪除、重命名等。該節即指定了爲實現上述目的的文件所在的目的路徑。

  6.DefaultInstall節和Install節

  在這一節中描述了設備驅動程序與硬件設備的實際屬性。默認情況下,首先執行[DefaultInstall]節,該節指定了要複製或刪除的文件,註冊表的更新,INF文件的更新等等信息,同時又包含指向其他節的指針。

  7.String節

  這一節中定義了字符串變量,當某些字符串頻繁地出現在INF文件中,爲簡化輸入,可以在該節中定義一個字符串變量,代表該字符串出現在INF文件中。

  讀懂INF文件

  下面讓我們以ATi顯卡的用於Windows XP的WDM驅動程序爲例來說明一下INF文件的具體含義,由於INF文件往往很長,爲了說明方便,我們刪除了一些大部分的信息,僅保留一個INF文件的結構,如圖1所示。

圖1

  INF文件精彩實例

  光說不練不行,下面讓我們來看幾個INF文件的典型應用。

  1.打開“鎖”定的註冊表

  第一步:打開記事本程序,輸入以下內容:

  [version]

  signature=”$chicago$”

  [defaultinstall]

  delReg=DeleteMe

  [DeleteMe]

  HKCU,“Software/Microsoft/Windows/CurrentVersion/Policies/System”,“DisableregstryTools”

  HKLM,“Software/Microsoft/Windows/CurrentVersion/Policies/System”,“DisableregstryTools”

  輸入完畢,另存爲UNLOCK.INF,名字任取,擴展名必須是INF。

第二步:在“UNLOCK.INF”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”,如圖2所示,被鎖的註冊表即會應聲而開。

圖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”,將其前面的註釋符號“;”去掉,你就可以自己DIY需要註冊表檢查程序備份的重要文件了。默認情況下,註冊表檢查程序創建註冊表備份文件時,會將“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。

圖3

  接着在“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/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/shell/pingbao",,,"屏幕保護"

  HKCR,"CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/shell/pingbao/COMMAND",,,"ssstars.scr /S /"%1/""

  錄入完畢,經檢查無誤後,另存爲“PingBao.inf”,文件名可任取,擴展名必須是INF。

  第二步:在“PingBao.inf”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”。

  第三步:當需要運行屏幕保護的時候,回到桌面上,在“我的電腦”圖標上點擊右鍵選擇“屏幕保護”選項,如圖4所示。點擊一下試試,是不是立即啓動屏幕保護程序了。

圖4

  注意:其中的“ssstars.scr”爲欲啓動的屏幕保護程序的文件名,請用你喜歡的屏幕保護程序文件來替換;如果你點選右鍵菜單中的“屏幕保護”選項後,沒有反應即沒有啓動屏幕保護程序,請將文中的“/S /"%1/"”修改爲“/"%1/" /S”即可。

6.將磁盤管理程序請進右鍵菜單

  對磁盤進行定期的整理是我們經常要做的一項工作,每次都是按部就班地點擊“開始→程序→附件→系統工具→磁盤碎片整理程序”,然後在彈出的選擇驅動器窗口中選擇要整理的分區,再點擊“碎片整理”按鈕開始整理。這樣比較麻煩,我們可以試一試將磁盤管理程序添加到右鍵菜單。

  第一步:打開記事本程序,輸入以下內容:

  [version]

  signature=”$chicago$”

  [defaultinstall]

  AddReg=addMe

  [AddMe]

  HKCR,"/Drive/shell/磁盤整理/command",,,"defrag.exe %1"

  輸入完畢,另存爲AddDefrag.INF,名字任取,擴展名必須是INF。

  第二步:在“AddDefrag.INF”文件上右鍵單擊,在彈出的右鍵菜單中點選“安裝”。

  第三步:以後要進行磁盤整理,只需打開資源管理器,在相應的盤符上點右鍵,在彈出的右鍵菜單中選擇“磁盤整理”即可(如圖5)。

圖5


  7.解決ATi顯卡無法安裝公版驅動的問題

  有些第三方的ATi顯卡無法安裝公版的驅動程序,造成該問題的原因是多方面的,如有些第三方廠商在硬件上做了改動,採用了非公版的PCB設計和BIOS等,這都可能會導致無法安裝公版驅動程序的情況發生。當你的顯卡遇到這個問題該怎麼辦呢?

  首先將你下載的ATi顯卡驅動程序解壓縮到硬盤任一目錄下,在“ATiDrive”子目錄中找到會列出所有的inf文件,ATiixpxx.inf——適用於Windows XP,ATii9xxx.inf——適用於Windows 9x ,ATii2kxx.inf適用於Windows 2000 。

  接着打開操作系統對應的INF文件,通過菜單欄的編輯——查找功能,查找“ati.mfg”字符串,隨後會看到“RADEON 7000、RADEON 7200、RADEON 7500、RADEON 8500”等條目信息,將其刪除。

  接着查找與你的顯卡匹配的字符串,如筆者的RADEON 7500顯卡,就查找“RADEON 7500”,找到如下信息:“RADEON 7500=ati2mtag_RV200,PCI/VEN_1002&&&&DEV_5157&&&&SUBSYS_013A1002”,將“&&&&SUBSYS_013A1002”刪除,保存文件。

  現在再試試,看問題是不是解決了。

  8.在命令行下安裝INF文件

  通常情況下,我們都是在Windows環境下安裝INF文件的,但是假如有一天,你需要在命令行運行INF文件該怎麼辦呢?

  在命令行提示符後輸入“ rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall 128 INF文件所在的路徑及文件名.inf ”,回車後即可安裝相應的INF文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章