史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > Hacker/Cracker 及加解密技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-08-06, 05:51 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 擴展使用.INF文件 -------製作免安裝的軟體

擴展使用.INF文件
-------製作免安裝的綠色軟體


在我寫的專門的文章——綠色軟體的製作中
講到把註冊表文件和提取出的軟體打包在一起做成綠色軟體。

但是.REG文件中的路徑都是靜態的,一旦寫好,就不會隨著系統的變化而變化,而在.INF文件中,可以使用變數操縱路徑,從而可以跟蹤安裝程序所需要的路徑的變化。

下面首先以一個完整的例子來演 示如何用.INF文件製作綠色軟體,然後具體講解.INF文件的各種用途。
.INF文件是什麼

.INF是 Device Information File 的縮寫,是微軟公司為供硬體設備製造商發佈其設備驅動程式而發展的———許多硬體設備的驅動程式都是使用 .INF文件來安裝的。.INF文件從 Windows3.X 時代就開始大量被使用了。
 
.INF文件是一種具有特定格式的純文本文件,我們可說它是一種安裝指令碼(SetupScript)。雖然 .INF 只是純文本文件,但是當我們在文件管理器explorer對 .INF文件按滑鼠右鍵後,如圖inf右鍵.PNG,在右鍵表單上就會出現「安裝I」指令,這是因為微軟公司已在其操作系統 Windows 中內裝提供了 Setup API(可以解釋.INF指令碼文件),我們只需用文本編輯軟體編寫 .INF文件,便可完成大部份的安裝工作,所以尤其是在軟體的大小並不是很大的情況下,安裝工作不是很複雜的時候,使用 .INF文件來進行安裝工作將會是一個好選項。而且如果要安裝設備驅動程式,.INF文件是目前唯一的選項。 可以用 .INF文件新增包括註冊表 列項和目的目錄的自訂軟體安裝指令。

.INF文件可以提供有限的平台獨立性,並指定有限的軟體依賴性。


目前.INF文件最普遍的套用是為安裝硬體設備的驅動程式服務的,本文的目的就是介紹 .INF文件的功能、結構、並提供了幾個 事例來說明如何用.INF文件,如何擴展.INF文件的用途,比如製作綠色軟體,僅供參考。

下面首先給出一個驅動程式的.INF文件的例子,如圖usbinfpng.png,是我從Windows2000中抽取出來的用於Win98se的USB存儲設備驅動的usbstor.INF文件,刪除了大部分內容,緊緊保留了一個基本的.INF文件的框 架。

.INF文件的格式
在圖usbinfpng.png中,可以看到.INF文件是由許多節(Section)組成,與.INI文件類似,整個.INF文件由幾個節組成,節名用方括號擴起來,如version 節,Manufacturer節,和Strings節等等。而每個節又由一系列的 列項組成,每個 列項都是是由一個鍵(Key)與一個值(類型)組成,都是「Key=類型」這樣的形式,在這些節中定義的項目可以完成硬體的自動檢測和軟體(包括驅 動程序)的安裝。.INF文件中分號後面的字串串是註釋。在一個 .INF文件中,所有跟隨在分號(;)後的文字都會被視為註釋。註釋並不一定要在新行開始,可以在一行文字後面加入註釋。
.INF文件案格式和作用如下所顯示:


[Version] 節: 包含對此 .INF文件的簡短描述與此 .INF文件支持的設備類型的資訊。用於驗證 .INF文件的基本版本資訊。

任何.INF文件都必須 包括這個節。

在圖usbinfpng.png中,[Version] 節中的語句 Signature="$CHICAGO$"表明這個.INF文件可以用於windows 95以後的所有平台上,目前來說就是win98,winme,winnt4,win2k,winxp,win2k3。這種.INF文件比較多見。


如果[Version]節中的簽名 列項是 Signature="$Windows 95$",表明這個.INF文件可以用於windows 95以後的Win9x平台上,目前來說就是win98,winme。 如果[Version]節中的簽名 列項是 Signature="$WINDOWS NT$",表明這個.INF文件可以用於WindowsNT系列的平台上,包括winnt4,win2k,winxp,win2k3。



WIN9x系列的操作系統的SetupAPI將會拒絕執行這種類型的.INF文件。

[Manufacturer] 與 [Manufacturer Name] 節: 列出此 .INF文件可辨識的所有硬體設備,並列出了開發該硬體的廠商名稱,主要用於硬體設備的安裝。


在設備驅動程式的.INF文件中必須包括[Manufacturer]節與 [Manufacturer Name] 節。


對應到圖usbinfpng.png中就是[Manufacturer]節和[Microsoft]節,安裝新硬體的嚮導中列出來的廠商名字和設備名稱就是來自這兩個節。


這行語句「%MfgName%=Microsoft」 的等號右邊的名字指明設備製造商是Microsoft,等號左邊是廠商的名字,圖中的廠商名稱是"Microsoft"(在後面講到的[Strings]節中)。



在一個.INF文件中可以有多個設備製造商的名字,都必須放在[Manufacturer]節中,同時[Manufacturer Name] 節可以列出該廠商的多種設備。 [Manufacturer Name] 節區含有對要安裝的設備的描述,並為要安裝的設備指出 [Install] 節區。


[Manufacturer Name]節語法:
[manufacturer-name]
device-description=install-section-name,device-id[,compatible-device-id]...
device-description就是對要安裝的設備的描述。install-section-name就是此設備的 [Install] 節區名稱,manufacturer-name 節區名稱必須已在 [Manufacturer] 節區中被定義。device-id是此設備的硬體標誌符,每個廠家的不同的硬體對應著不同的設備標誌符。



對應到圖usbinfpng.png中,就是這行語句「%GenericBulkOnly.DeviceDesc%=USBSTOR_BULK, USB\Class_08&SubClass_02&Prot_50」等號左邊是設備的描述,也就是設備名字是"USB Mass Storage Device",而等號右邊的USB\Class_08&SubClass_02&Prot_50是設備標誌符,這個標誌符是對應到一類的硬體設備,就是USB存儲設備,操作系統檢測到USB存儲設備,安裝相應的驅動的時候,就會從設備驅動的安裝節即[USBSTOR_BULK]節開始安裝驅動。



可以看出來此.INF文件可以用於通用的USB存儲設備"USB Mass Storage Device"的驅動程式的安裝。



普通的安裝軟體的.INF文件中,不包括[Manufacturer] 與 [Manufacturer Name] 節,即使包含,也不會執行它們,這2個節僅僅用於硬體的設備驅動中起作用。

[Install] 節: 描述設備驅動程式與硬體設備的實際內容。它也定義了所有 [Install] 節的名稱,在此定義的節中包含了安裝該設備的資訊和指令。


預設情況下,會執行 [DefaultInstall] 節,在圖inf右鍵.PNG中,Install操作就會執行[DefaultInstall] 節。[DefaultInstall] 節中包含指向其他節的游標,該節可用於指定要複製和刪除的文件、註冊表的更新、.INF文件的更新等。

對應到圖usbinfpng.png中,[Install] 節就是[USBSTOR_BULK]節,其中要執行複製文件CopyFiles和增加註冊表項目AddReg2種操作。


如果是安裝普通的軟體的.INF文件,可以通過滑鼠右鍵表單上的「安裝」指令來安裝(圖inf右鍵.PNG),這個時候.INF文件必須包括[DefaultInstall]節,也可以包括其他的[Install]節,用RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection [Install]節的名字,這樣類似的指令來安裝。



[Install]節的語法:

[install-section-name]
Copyfiles=file-list-section[,file-list-section]...
LogConfig=log-config-section-name
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]...
UpdateCfgSys=update-config-section
UpdateAutoBat=update-autoexec-section

[Install] 節定義了安裝程式與硬體驅動需要的資源,以便安裝新的驅動程式或者軟體。此節中每個 列項都有其特定格式與意義,並非每個 列項都是必要的。

無論是安裝驅動程式還是普通的軟體,最後都要從某一個[Install] 節開始執行。

[DestinationDirs] 節: 指定硬碟上複製、刪除或重命名節文件的位置(例如 \Windows 或 Windows\System)。

.INF文件通過[DestinationDirs]節來指定操作的目標路徑,語法如下:


[DestinationDirs]
file-list-section =ldid[, subdir ]
DefaultDestDir=ldid[, subdir ]
[DestinationDirs] 節定義了 [file-list-section] 節中指定的操作(可以是 CopyFiles、RenFiles 或 DelFiles 節)的目標目錄。DefaultDestDir指令可以為 .INF文件中的任何沒有明確在[DestinationDirs]節中命名的CopyFiles、RenFiles或DelFiles節指定預設目標資料夾。


在.INF文件中,使用邏輯磁牒標識符 (LDID) 來表示路徑,如下表:


00 Null LDID - 可用於新增新的 LDID
01 Source Drive:\pathname
10 Windows 資料夾(等價於%windir%目錄 )
11 System 資料夾
12 IOSubsys 資料夾
13 Command 資料夾
17 Inf 資料夾
18 Help 資料夾
20 Fonts
21 Viewers
22 VMM32
23 Color 資料夾
24 包含 Windows 資料夾的驅動器根目錄
28 Host Winboot
30 啟動碟的根資料夾
31 虛擬啟動碟的主驅動器根資料夾


如圖usbinfpng.png中,這行語句「USBSTOR.CopyList = 10, system32\drivers」表明USBSTOR.CopyList這個文件列表中文件的目標路徑是%windir%\system32\drivers,其中10代表Windows所在的資料夾,也就是說USBSTOR.CopyList這個文件 列表中文件USBSTOR.SYS在安裝驅動的時候將會被複製到%windir%\system32\drivers資料夾。


而usbstor.inf這個文件將會被複製到17,也就是%windir%\inf資料夾中。


[Strings] 節: 定義並列出上面所使用的可本機化字串串。如果某個特定的字串串會在 .INF文件中頻繁地出現,那麼在此節中為它們定義一個字串串變數將會是個好選項。


如圖usbinfpng.png中,語句MfgName="Microsoft",定義了[Manufacturer]節使用的MfgName變數(就是字串串"Microsoft")。
[FileCopy/Delete/RenameSection(s)] 節:列出要複製、刪除或重命名的文件。 節的名字是CopyFiles,DelFiles,RenFiles。


[RegistryUpdateSection(s)] 節:指定在註冊表中增加或刪除的項目。 節的名字是AddReg,DelReg。


[IniFileUpdateSection(s)] 節:指定 .ini 文件的更新。連接將在該節中新增。 節的名字是 UpdateInis。
[ClassInstall] 節:為設備定義一個新的類別(Class)。主要用於硬體設備的安裝。
[SourceDisksNames] 節: 列出包含文件的磁牒。
[SourceDisksFiles] 節: 列出每個文件所在的特定磁牒。
其他的節還有許多,如:Update .ini Fields 節 (UpdateIniFields),Add Ini File to Registry 節 (Ini2Reg),Update Config.sys 節 (UpdateCfgSys),Update Autoexec.bat 節 (UpdateAutoBat),Optional Components 節,等等。

.INF文件是由Windows的SetupAPI解釋執行的指令碼文件,它的執行程序很簡單,是一種線性的執行,線性的意思就是.INF文件的執行程序不存在分支語句,也就是沒有條件語句,一旦開始執行,就是沿著類BIOS的路線執行。


它的執行是按照節為服務機構來 執行的,從某一個[Install]節開始執行,從上到下執行該節中的 列項,如果該 列項是一個節,那麼就一條條執行子節中的 列項,如此遞回執行。


這樣的指令碼看起來功能很弱,但是對於簡單的安裝工作已經足夠了,安裝不外乎複製文件,增加註冊表,修改.INI文件等工作,這些都可以用.INF文件來完成。


對於更複雜的安裝要求,如要求安裝程序的界面漂亮方便,要求有選項性的安裝,要求安裝程序自動修復 的功能,就只好求助於其他的工具了,如微軟的Windows Installer,就具備更加強大的功能



.INF文件的版本


.INF文件的語法是統一的分節語法,隨著操作系統的更新,微軟逐漸增加了一些必要的關鍵字,但是整個的.INF文件的結構不會變化。從語法上來說,.INF文件都是一個類別。


按照.INF文件的版本來分類,可以分為2類:


1 AdvancedINF,在[Version]節中有「AdvancedINF=2.5,"您需要新版本的 AdvPack.dll" 」這麼一行語句,表明此.INF文件需要AdvPack.dll這個動態連接庫來解釋執行,AdvancedINF有一些進階特性,但是在目前用的不太多。




2 普通INF,沒有指明需要AdvPack.dll的.INF文件,使用SetupAPI.DLL來解釋執行(win9x系列的操作系統使用Setupx.dll),系統中預設使用的就是這種普通INF。

.INF文件的功能

從前面的介紹,能夠看出使用 .INF文件可以完成如下功能:

1 複製文件、刪除文件、或重新命名文件。


2 新增或刪除註冊表(Registry)中的項目。



3 修改重要的系統設定文件(如 Autoexec.bat、Config.sys、.INI 等)。
粗看起來,似乎上面提到的第一個功能可以用批次處理文件.BAT來完成,第二個功能可以通過註冊表文件.REG來完成,第三個功能現在用得不多,不經常處理.INI文件了。

這樣說起來似乎.INF文件也沒有太大的優勢啊。這種看法是有問題的,下面我將會著重 指出.INF在在這幾個方面的套用,而不會仔細講解.INF的語法。


下面要提到.INF文件優於別的工具的方面。

用.INF文件編輯註冊表
.INF文件可以編輯操縱註冊表,相應的的指令是AddReg和DelReg,語法如下:



AddReg = add-registry-section[,add-registry-section]...
[ add-registry-section]
reg-root-string, [subkey], [value-name], [flag], [value]
[add-registry-section]節定義了將要增加的註冊表子鍵或值名,可以有選項地設定它的值。


DelReg = del-registry-section[,del-registry-section]...
[ del-registry-section]
reg-root-string, subkey, [value-name]
[ del-registry-section]節定義了將要從註冊表中刪除子鍵subkey或值名value-name。


有時候上網遇到某些網站,修改了IE的主頁,然後禁用了REGEDIT工具,這個時候很多人只好借助於其他第三方工具如魔法兔子等來恢復註冊表的編輯權限,其實這個時候僅僅依靠.INF文件就可以恢復使用REGEDIT工具的權限。


把下面的這段程式碼複製到記事本裡,另存為jiereg.inf,然後右擊它選項「安裝(I)」,就可以了。


[Version]
  Signature="$CHICAGO$"
  [DefaultInstall]
  AddReg=My.Add.Reg
  [My.Add.Reg]
  HKCU,"SOFTWARE\Microsoft\windows\currentversion\policies\system","disableregistrytools", 0x00010001,"0"
HKLM,"SOFTWARE\Microsoft\windows\currentversion\policies\system","disableregistrytools", 0x00010001,"0"


當然還可以用其他的方法,原理也是一樣的,這裡僅僅是演示一下.INF文件的用途。


直接使用註冊表文件,有時候還會遇到另外一個缺點,就是.REG文件裡面使用16進制程式碼表示UNICODE字串串的,如下面的兩條註冊表語句:


[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Cookies"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,43,00,6f,00,6f,00,6b,00,69,0 0,65,00,73,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SoftEther]
"ImagePath"=hex(2):22,00,44,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,53,0 0,6f,00,66,00,74,00,45,00,74,00,68,00,65,00,72,00,5c,00,53,00,6f,00,66,00,74,00,45,00,74,00,68,00,65,00,72,00,2e,00,65,0 0,78,00,65,00,22,00,20,00,73,00,65,00,72,00,76,00,69,00,63,00,65,00,00,00,00,00

這上面兩條語句難以閱讀和修改,手工修改的話很麻煩,其中
"Cookies"的值實際上就是「%USERPROFILE%\Cookies」字串串的UNICODE表示。


"ImagePath"的值實際上就是"D:\Program Files\SoftEther\SoftEther.exe" service
如果用.INF文件的形式的話,就很簡單明白了:


[Version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=Folders_AddReg
[Folders_AddReg]
HKCU,"Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders","Cookies",0x00020000,"%USERPROFILE%\Cookies"
HKLM,"SYSTEM\CurrentControlSet\Services\SoftEther","ImagePath",0x020000,"""D:\Program Files\SoftEther\SoftEther.exe"" service"


這個時候可以手工修改裡面的路徑資訊,而.REG文件則很難做到這一點。

用.INF文件編輯.INI文件
.INF文件可以使用UpdateInis指令修改.INI文件的功能也經常需要,UpdateInis的語法如下:

UpdateInis = update-ini-section[,update-ini-section]...
[ update-ini-section-name]
ini-file, ini-section, [old-ini-entry], [new-ini-entry], [flags]
[update-ini-section-name]節給出的 .INF 文件中替換、刪除或增加的全部 列項。



ini-file 包含要更改 列項的 .ini 檔案名。


ini-section 包含要更改 列項的節名。 old-ini-entry 可選,常用形式為 Key=類型。new-ini-entry 可選,常用形式為 Key=類型。flags 是可選操作標記。



使用邏輯磁牒標識符 (LDID),可以方便的修改.INI文件中的路徑資訊,當然其他的 列項也同樣。

舉例如下:
Total Commander ,是一套極佳的文件管理員,內含各種壓縮與解壓縮,類似NC般非常好用的工具,對於文件與路徑的尋找,除一般的複製、刪除、搬移、編輯等功能外,還有FTP功能(具有續傳、背景傳輸)與解決了中文亂碼問題,"專題"再也不會變成"彩題"、新增文件分割、文件合併、文件編碼、文件解碼(MIME,UUE,XXE)及新的操作界面(浮動工具列)。

真是一套相當強悍可完全取代文件總管的工具程序。


Total Commander依靠wincmd.ini來配置相應的操作特性和功能,於是可以使用如下的.INF文件修改wincmd.ini中的路徑資訊:


[version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=AddGhister
UpdateInis=UpdateInicmd
[AddGhister]
HKCU,"Software\Ghisler\Total Commander","IniFileName",0,".\\wincmd.ini"
HKCU,"Software\Ghisler\Total Commander","FtpIniName",0,".\\wcx_ftp.ini"
[UpdateInicmd]
%01%\wincmd.ini, Configuration,,"InstallDir=%01%"
%01%\wincmd.ini, Configuration,,"Mainmenu=%01%\LANGUAGE\TCExtMenu.mnu"

其中 [AddGhister]節負責修改註冊表中記錄的wincmd.ini的路徑,而[UpdateInicmd]節負責修改wincmd.ini文件紅的相應路徑資訊,可以看出,一個簡單的.INF文件就完成了修改Total Commander的路徑的工作,在Total Commander5.x版本中,必須修改wincmd.ini文件中的路徑資訊,這個時候使用.INF文件是非常方便的。

用.INF文件刪除正在使用的文件
有時候由於某些文件正被操作系統使用而無法刪除,如某些用於檔案總管的OCX控件,可以使用.INF文件的DelFiles指令刪除,該指令如果發現要刪除的文件被鎖定,就會把文件放到系統刪除貯列中排隊,等系統重啟動的時候,該檔案就自動被刪除了。


Delfiles的語法是:

Delfiles= file-list-section [,file-list-section]...
[file-list-section]
filename,,,1

[file-list-section]節定義了將要刪除的文件列表,filename後面的1是一個標誌,指明如果文件當前無法刪除,就等到系統重啟動後刪除。


把下面的這段程式碼複製到記事本裡,另存為delinuse.inf,把這個檔案拷貝到無法刪除的文件的目錄,然後右擊它選項「安裝(I )」,就可以刪除當前目錄下正在使用的setup.exe和setup2.exe。



[Version]
Signature="$Chicago$"

[DestinationDirs]
DefaultDestDir = 01 ; 當前目錄 ,定義了將要刪除的文件的路徑
[DefaultInstall]
DelFiles = DELETELIST
[DELETELIST]
setup.exe ,,,1; 將要刪除的文件
setup2.exe ,,,1; 將要刪除的文件

同樣可以使用Copyfiles指令替換系統正在訪問的文件。這些功能通過普通的del和copy指令都無法實現,如果不使用.INF文件,必須使用第三方的軟體來完成。

輔助製作綠色軟體

在註冊表.REG文件中,不可以使用變數,這個缺陷對於需要設定路徑的安裝程序來說,是非常致命的弱點,.REG文件中的路徑都是靜態的,一旦寫好,就不會隨著系統的變化而變化,如果需要把安裝的程序從C碟改變到D碟,而在.REG文件中記錄了安裝路徑的 話,這個時候直接倒入註冊表文件.REG是不行的,匯入的註冊表仍然是原來寫入的路徑。而在.INF文件中,可以使用變數來操縱路徑,從而可以跟蹤安裝程序所需要的路徑的變化。



對於綠色軟體的製作,可以看我寫的另外的專門的文章——綠色軟體的製作,其中核心的一點就是獲得原來軟體的安裝程序所做出的註冊表的改變,然後把該變化匯出為一個註冊表文件.REG來進一步分析。如果匯出的.REG文件不包括絕對路徑,那麼可以把該註冊表 文件和提取出的軟體打包在一起做成綠色軟體。如果匯出的.REG文件中包含當前軟體的絕對安裝路徑,那麼就必須每次都要手工修改註冊表中路徑,是很麻煩的,降低了做成綠色軟體的意義所在。


而使用.INF文件,使用AddReg指令可以輕鬆容易的解決這個注 冊表路徑的難題。

對於綠色軟體的安裝製作來說,最重要的就是01,也就是源資料夾。下面舉一個例子:


Registry Crawler V4.5 ,是強大的用戶和開發者快速定位並配置註冊表的工具軟體。一個強大的搜尋引擎允許你關於搜尋標準尋找註冊資訊。(可以從天空軟體站下載http://www4.skycn.com/soft/2963.htm...一條語句:



[HKEY_LOCAL_MACHINE\SOFTWARE\4Developers\RCrawler\AppPath]
@="F:\\tools\\Reg\\RCrawler"
其中「F:\tools\Reg\RCrawler」是安裝路徑。
而改寫為.INF文件就是:
[version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=Add
[Add]


HKLM,"SOFTWARE\4Developers\RCrawler\AppPath","",0,"%01%"
注意裡面的%01%就代表當前的安裝路徑。

當我們把F:\tools\Reg\RCrawler這個目錄下的文件移動到其他目錄時候,要用.REG文件的方式的話,就必須手工修改註冊表文件,而使用前面的.INF文件的時候,什麼都無需修改,只要在文件管理器explorer裡面,用滑鼠右鍵執行 「安裝」指令的時候,%01%就自動被替換為當前所在的目錄了。

最後,總結一句,註冊表文件.REG非常方便和直觀,但是對於處理路徑的變化的情況,非常笨拙和不方便,而.INF不如註冊表文件直觀,但是可以方便的處理路徑資訊(包括UNICODE的路徑資訊),所以應該把.REG文件和.INF文件結合使用,互相彌 補各自的缺點。

.INF文件的產生方法

可以直接手工用一個純文本的編輯器書寫.INF文件,當相對應的.REG文件非常龐大, 列項比較多時候,可以用小工具reg2inf.exe來自動的把.REG文件轉換為.INF文件,然後再進去行相應的路徑修改,把絕對路徑替換為用邏輯磁牒標識符 (LDID) 來表示的路徑。


如果涉及到文件操作的時候,只好手工寫了,目前還沒有自動化的工具。

inf 文件的好處是 不像vbs那麼強大,甚至有可能由危險的格式化程式碼
inf的限制很強,這樣比其他的指令碼文件安全,當然相對的功能就弱,但是也足夠了

以上談到的都是我平時使用.INF文件的經驗和一點學習心得,歡迎大家提出不同意見和看法,進行討論。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2004-08-06, 08:52 PM   #2 (permalink)
註冊會員
榮譽勳章
UID - 14476
在線等級: 級別:8 | 在線時長:115小時 | 升級還需:2小時級別:8 | 在線時長:115小時 | 升級還需:2小時級別:8 | 在線時長:115小時 | 升級還需:2小時
註冊日期: 2002-12-19
VIP期限: 2011-06
住址: 美女主播群親衛隊
文章: 243
精華: 0
現金: 0 金幣
資產: 1009257 金幣
預設

嗯,感謝大大的分享
joexyz 目前離線  
送花文章: 1, 收花文章: 5 篇, 收花: 5 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 06:37 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1