Sitetag -->
Facebook Badge START -->偶ㄉ貼貼辣 | 建立你的名片貼

隨機分享

2010-10-11

何謂 Inf 文件

INF文件全稱Information File文件,是Winodws操作系統下用來描述設備或文件

等數据信息的文件。INF文件是由標准的ASCII碼組成,您可以用任何一款文字編輯器查
看修改其中的內容。一般我們總是認為INF文件是系統設備的驅動程序,其實這是錯誤的
認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因為INF文件為該設
備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看著說
明書安裝電腦硬件一樣,我們就是Windows系統,說明書就是INF文件。INF文件功能非
常強大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系統底下的超強
批初理。要熟練掌握和理解甚至是編寫INF文件需要對其內部結构有相當的認識。下面
就讓我們來深入到INF文件中的內部一窺其真面貌吧!
  INF文件的組成有節(Sections),鍵(Key)和值(value)(圖示一)三部分。
關鍵節有[Version]版本描述信息,主要用于版本控制。
      [Strings]字符串信息,用于常量定義。
    [DestinationDirs]定義系統路徑信息。
    [SourceDisksNames]指明源盤信息。
    [SourceDisksNames]指明源盤文件名。
               [DefaultInstall]開始執行安裝。
其它的節可以自定義,下面用一實例來具體講解。

 


[Version]
Signature=$Chicago$
Provider=%Author%

[Strings]
Product="添加文件關聯演示"
Version="1.0"
Author="薛飛"
Copyright="Copyright?2002 by Rainsoft"
CustomFile="inf" ;修改您需要的文件名后綴
Program="NOTEPAD.EXE"  ;修改您需要關聯的應用程序名

[Add.Reg]
HKCR,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%File
HKCR,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安裝信息
HKCR,%CustomFile%"File\shell","",FLG_ADDREG_TYPE_SZ,open
HKCR,%CustomFile%"File\shell\open\command","",FLG_ADDREG_TYPE_SZ,%program% %1

[DefaultInstall]
AddReg=Add.Reg


  在[Version]節中"Signature"項定義了該INF文件需要運行在何種操作系統版本中。有
$Windows NT$, $Chicago$, or $Windows 95$三個值供選擇,一般選擇$Chicago$即可。
項Provider中定義了該文件的創作來源,%Author%指引用Author項的值。您也可自定其它項
來描述該INF文件的版本信息。該INF文件的作用是關聯文件,所以主要是對注冊表的操作,
我們來看[Add.Reg]節,共四條語句,格式都是一樣。HKCR表示根HKEY_CLASSES_ROOT,第二
個參數是子鍵的路徑名,第三個參數是表明值的類型,最后是值(具體見附表)。以上都是對操
作的定義與過程,在節[DefaultInstall]中是開始執行要安裝的流程,AddReg表明是對注冊
表進行操作,操作對象是Add.Reg節中的定義。如果您把AddReg換成DelReg則是刪除注冊表中
的鍵值。當鼠標單擊該INF文件在彈出的菜單中選擇“安裝”就開始執行您所定義的操作。該
示例在系統的INF文件右鍵菜單中增加了查看編輯功能並設置了默認動作,因為在安裝了不了
解的INF文件有可能對系統產生不良的影響,這樣雙擊文件就可打開編輯該文件了。
  在看看INF文件在文件操作方面的能力吧。請看下面的一個例子。


[Version]
Signature=$Chicago$
Provider=%Author%
[Strings]
Product="文件復制和安裝演示"
Version="1.0"
Author="薛飛"
Copyright="Copyright?2002 for Rainstorey"
[FileList]
ProcessList.exe ;此文件已在當前目錄下,下同。
[FileList1]
Wordpad.exe
[DestinationDirs]
FileList=11 ;安裝到Windows的系統目錄
FileList1=10 ;安裝到Windows目錄
[DefaultInstall]
Copyfiles=FileList,FileList1


  相同的節的作用與上一例類似,請注意新出現的節[FileList],這是我自定義的節名,它表
示了一個文件組,[FileList1]也類似。在節[DestinationDirs]中需定義每個文件組復制到的
目錄(各個常量的意義見附表)。Copyfiles指明了需要進行復制的文件組。
  INF文件的操作還包括服務(NT系統)程序的安裝和卸載,INI文件的轉換等。由于這些操作都
比較的復雜和繁瑣,且有一定的危險性故下次有机會再向大家進行深入探討。
  最后我們來看一下INF文件的執行机制,這時你也許要問不就是簡單的執行一下“安裝”嗎?
知其然不知其所以然知識水平是不會提高的。在“文件夾選項”中的“文件類型”找到INF文件的
“安裝”命令看到一串命令。“rundll32.exe setupapi,InstallHinfSection DefaultInst_
all 132 %1”它表示了運行Dll文件setupapi.dll中的命令InstallHinfSection並傳遞給它起始
節的名字 DefaultInstall。可見起始節是可以自定義的。INF文件的執行也可用在各種支持API調
用的編程工具中。至此INF文件的結构和運行机制我們已基本了解,現在就讓你的思維開動起來,讓
它更好的為我們工作吧。


注冊表操作的常量定義:
----------------------------------------------------------
常量          根值
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
-----------------------------------------------------------
FLG_ADDREG_APPEND                 在多字符串后添加字符
FLG_ADDREG_TYPE_SZ                字符類型
FLG_ADDREG_TYPE_MULTI_SZ          字符串類型
FLG_ADDREG_TYPE_EXPAND_SZ         擴展字符串類型
FLG_ADDREG_TYPE_BINARY            二進制值
FLG_ADDREG_TYPE_DWORD             DWord值
FLG_ADDREG_TYPE_NONE              NULL值
----------------------------------------------------------


[DestinationDirs]節中所定義的常量路徑
----------------------------------------------------------
01 源目錄(后跟路徑)
10 Windows目錄
11 Windows系統目錄
12 驅動目錄
17 INF文件目錄
18 幫助文件目錄
20 字體目錄
21 根目錄
24 應用程序目錄
25 共享目錄
30 當前根目錄
50 System目錄
51 Spool 目錄
52 Spool 驅動目錄
53 用戶配置目錄
----------------------------------------------------------

[DefaultInstall]節中定義的操作
----------------------------------------------------------
LogConfig                Log日志文件配置
Copyfiles                復制文件
Renfiles                 文件改名
Delfiles                 刪除文件
UpdateInis               更新Inis
UpdateIniFields          更新Ini字段
AddReg                   添加注冊項
DelReg                   刪除注冊項
Ini2Reg                  Ini文件轉換為Reg文件

INF文件全稱Information File文件,是Winodws操作系統下用來描述設備或文件
等數据信息的文件。INF文件是由標准的ASCII碼組成,您可以用任何一款文字編輯器查
看修改其中的內容。一般我們總是認為INF文件是系統設備的驅動程序,其實這是錯誤的
認識,Windows之所以在安裝某些硬件的驅動時提示需要INF文件是因為INF文件為該設
備提供了一個全面描述硬件參數和相應驅動文件(DLL文件)的信息。就好比我們看著說
明書安裝電腦硬件一樣,我們就是Windows系統,說明書就是INF文件。INF文件功能非
常強大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系統底下的超強
批初理。要熟練掌握和理解甚至是編寫INF文件需要對其內部結构有相當的認識。下面
就讓我們來深入到INF文件中的內部一窺其真面貌吧!
  INF文件的組成有節(Sections),鍵(Key)和值(value)(圖示一)三部分。
關鍵節有[Version]版本描述信息,主要用于版本控制。
      [Strings]字符串信息,用于常量定義。
    [DestinationDirs]定義系統路徑信息。
    [SourceDisksNames]指明源盤信息。
    [SourceDisksNames]指明源盤文件名。
               [DefaultInstall]開始執行安裝。
其它的節可以自定義,下面用一實例來具體講解。

 


[Version]
Signature=$Chicago$
Provider=%Author%

[Strings]
Product="添加文件關聯演示"
Version="1.0"
Author="薛飛"
Copyright="Copyright?2002 by Rainsoft"
CustomFile="inf" ;修改您需要的文件名后綴
Program="NOTEPAD.EXE"  ;修改您需要關聯的應用程序名

[Add.Reg]
HKCR,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%File
HKCR,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安裝信息
HKCR,%CustomFile%"File\shell","",FLG_ADDREG_TYPE_SZ,open
HKCR,%CustomFile%"File\shell\open\command","",FLG_ADDREG_TYPE_SZ,%program% %1

[DefaultInstall]
AddReg=Add.Reg


  在[Version]節中"Signature"項定義了該INF文件需要運行在何種操作系統版本中。有
$Windows NT$, $Chicago$, or $Windows 95$三個值供選擇,一般選擇$Chicago$即可。
項Provider中定義了該文件的創作來源,%Author%指引用Author項的值。您也可自定其它項
來描述該INF文件的版本信息。該INF文件的作用是關聯文件,所以主要是對注冊表的操作,
我們來看[Add.Reg]節,共四條語句,格式都是一樣。HKCR表示根HKEY_CLASSES_ROOT,第二
個參數是子鍵的路徑名,第三個參數是表明值的類型,最后是值(具體見附表)。以上都是對操
作的定義與過程,在節[DefaultInstall]中是開始執行要安裝的流程,AddReg表明是對注冊
表進行操作,操作對象是Add.Reg節中的定義。如果您把AddReg換成DelReg則是刪除注冊表中
的鍵值。當鼠標單擊該INF文件在彈出的菜單中選擇“安裝”就開始執行您所定義的操作。該
示例在系統的INF文件右鍵菜單中增加了查看編輯功能並設置了默認動作,因為在安裝了不了
解的INF文件有可能對系統產生不良的影響,這樣雙擊文件就可打開編輯該文件了。
  在看看INF文件在文件操作方面的能力吧。請看下面的一個例子。


[Version]
Signature=$Chicago$
Provider=%Author%
[Strings]
Product="文件復制和安裝演示"
Version="1.0"
Author="薛飛"
Copyright="Copyright?2002 for Rainstorey"
[FileList]
ProcessList.exe ;此文件已在當前目錄下,下同。
[FileList1]
Wordpad.exe
[DestinationDirs]
FileList=11 ;安裝到Windows的系統目錄
FileList1=10 ;安裝到Windows目錄
[DefaultInstall]
Copyfiles=FileList,FileList1


  相同的節的作用與上一例類似,請注意新出現的節[FileList],這是我自定義的節名,它表
示了一個文件組,[FileList1]也類似。在節[DestinationDirs]中需定義每個文件組復制到的
目錄(各個常量的意義見附表)。Copyfiles指明了需要進行復制的文件組。
  INF文件的操作還包括服務(NT系統)程序的安裝和卸載,INI文件的轉換等。由于這些操作都
比較的復雜和繁瑣,且有一定的危險性故下次有机會再向大家進行深入探討。
  最后我們來看一下INF文件的執行机制,這時你也許要問不就是簡單的執行一下“安裝”嗎?
知其然不知其所以然知識水平是不會提高的。在“文件夾選項”中的“文件類型”找到INF文件的
“安裝”命令看到一串命令。“rundll32.exe setupapi,InstallHinfSection DefaultInst_
all 132 %1”它表示了運行Dll文件setupapi.dll中的命令InstallHinfSection並傳遞給它起始
節的名字 DefaultInstall。可見起始節是可以自定義的。INF文件的執行也可用在各種支持API調
用的編程工具中。至此INF文件的結构和運行机制我們已基本了解,現在就讓你的思維開動起來,讓
它更好的為我們工作吧。


注冊表操作的常量定義:
----------------------------------------------------------
常量          根值
HKCR HKEY_CLASSES_ROOT.
HKCU HKEY_CURRENT_USER.
HKLM HKEY_LOCAL_MACHINE.
HKU HKEY_USERS.
-----------------------------------------------------------
FLG_ADDREG_APPEND                 在多字符串后添加字符
FLG_ADDREG_TYPE_SZ                字符類型
FLG_ADDREG_TYPE_MULTI_SZ          字符串類型
FLG_ADDREG_TYPE_EXPAND_SZ         擴展字符串類型
FLG_ADDREG_TYPE_BINARY            二進制值
FLG_ADDREG_TYPE_DWORD             DWord值
FLG_ADDREG_TYPE_NONE              NULL值
----------------------------------------------------------


[DestinationDirs]節中所定義的常量路徑
----------------------------------------------------------
01 源目錄(后跟路徑)
10 Windows目錄
11 Windows系統目錄
12 驅動目錄
17 INF文件目錄
18 幫助文件目錄
20 字體目錄
21 根目錄
24 應用程序目錄
25 共享目錄
30 當前根目錄
50 System目錄
51 Spool 目錄
52 Spool 驅動目錄
53 用戶配置目錄
----------------------------------------------------------

[DefaultInstall]節中定義的操作
----------------------------------------------------------
LogConfig                Log日志文件配置
Copyfiles                復制文件
Renfiles                 文件改名
Delfiles                 刪除文件
UpdateInis               更新Inis
UpdateIniFields          更新Ini字段
AddReg                   添加注冊項
DelReg                   刪除注冊項
Ini2Reg                  Ini文件轉換為Reg文件

◎文章出處: http://blog.yam.com/invite19/article/10751074




0 我有話要說!留言請進→:

張貼留言

##EasyReadMore##