解讀Autorun.inf自動執行檔的寫法

我們在使用各種光盤時,都會發現同一種現象:當我們把光盤放入光驅後,Windows便能自動地啟動光盤上的某個程式,從而完成一個基於Windows平 台設計的產品的配置、裝設等操作;或者打開檔案總管,會發現光盤的圖示已被改變成標志其產品之類的圖示了。這的確讓我們感覺到操作上的方便和快捷。其實, 這是利用了Windows作業系統的“自動播放(AutoPlay)”功能。下面,筆者就對“自動播放”進行詳細介紹,以期讀者能打造自己需要的“自動播放”。

自動播放的工作原理

自動播放的原理很簡單:當光盤被放入採用Windows作業系統的電腦光驅中時,系統會立即偵測Windows的一個32位光驅驅動程式,然後搜尋光 盤上根目錄下一個叫Autorun.inf的配置文件,並自動運行這個Autorun.inf中設定的命令。顯然,在整個過程中起著關鍵作用的便是這個 Autorun.inf文件,我們所體驗到的“自動”,事實上都是在這個文件裏預先指定的。

解讀Autorun.inf

Autorun.inf是一個文本形式的配置文件,我們可以用文本編輯軟體進行編輯,它隻能位於驅動器的根目錄下。這個文件包含了需要自動運行的命令,如改變的驅動器圖示、運行的程式檔案、可選快捷菜單等內容。

Autorun.inf文件結構較簡單,主要包含一個固定的段標識[Autorun]和自定的自動播放命令(Autoplay command)。定義好Autoplay command就可以實現自己的自動播放了。

1﹒ 改變驅動器圖示命令:Defaulticon命令和Icon命令

這兩條命令都能改變光盤圖示,功能相同。我們平時見到的光盤圖示的改變就是用此命令來實現的。

命令中都包含圖示資訊文件(iconname),可以指出該文件在光盤上的相對路徑(path),在沒有指出路徑的情況下,Windows自動到光盤的根目錄下搜尋圖示資訊文件。其命令格式為:

Defaulticon=Path\Iconname

或Icon=Path\Iconname

Iconname可以是.ico、.bmp、.exe或 .dll文件。例如,要引用光盤根目錄上Setup.ico作為光盤的圖示,可這樣表示:

Defaulticon=Setup.ico

或Icon=Setup.ico

如果這個文件包含多個圖示,可指定文件中的一個資源號(索引)來引用其中的不同圖示。資源號由0、1、2……數字來標識,分別代表圖示資訊文件中的第 一個圖示、第二個圖示……,它與圖示資訊文件間用逗號分隔。例如,在光盤autorun目錄下有一個包含兩個圖示的autorun.exe文件,要引用其 中的第二個圖示作為光盤圖示,可以這樣表示:

Defaulticon =Autorun\Autorun.exe, 1

或Icon=Autorun\Autorun.exe, 1

當你對這個圖示感到不滿意時,隻要換一個資源號即可。

需要說明的是,如果Defaulticon 和Icon命令同出現在一個Autorun.inf文件中,Autoplay使用Defaulticon命令而忽略Icon命令。

自動執行檔﹙Autorun.inf﹚的寫法
什麼是 “Autorun.inf” 檔?
當您希望使用者將光碟片一放進光碟機,即能自動播放您想要的頁面或開啟某個檔案時。
(指一般 CD-Title,而非 VCD 或相片光碟)
需於光碟根目錄下,有 “Autorun.inf” 檔,於該檔中指定開啟 (open) 某執行檔 (.exe) 或檔案。
檔名需為 Autorun.inf (Win 系統大小寫均可)

【狀況一】要開啟的檔案是一般執行檔,不是網頁時

[autorun]
open=檔名.exe
icon=檔名.ico


註:(1) "autorun.inf” 為純文字檔,可用 "記事本" 編寫。
  (2) 將 "autorun.inf” 與執行檔 (.exe) 同置根目錄層。
    (如果 exe 檔不在根目錄,請依相對路徑寫法,指向它)
  (3) 執行檔 (.exe) 的來源可能是多媒體整合軟體包裝後的檔案,如...


(1) Flash、(2) Director、(3) Authorware、
(4) 一般(未特別設計圖示者)、(5) 自行設計圖示者

  (4) 圖示(icon)附檔名為 .ico
  (5) 未指定圖示(icon)時, 則依作業系統預設值,例如:
  (6) 圖示製作軟體
    擬自行製作圖示,除 PhotoImpact 7.0 外,可使用軟體有...
   【網站】Toget 軟體下載
       PC home > toget首頁 > 美術繪圖 > 圖示製作
 
【狀況二】要開啟的檔案是網頁,不是一般執行檔時

當主頁為網頁時,由於 html 不是執行檔,所以需於其前另行指定能開啟它之程式。
讓作業系統的檔案總管(Explorer.exe)自行判斷用什麼應用程式去開 html 檔,因每台電腦安裝路徑或作業系統(WINDOWS、WINNT)不盡相同,故不宜指定檔案總管(Explorer.exe)的絕對路徑。

註:"Explorer.exe" 是檔案總管,不是 IE 的 "IEXPLORE.EXE"。
【正確寫法】

[autorun]
open=Explorer.exe index.htm
icon=檔名.ico

註:此處 "index.htm" 僅為舉例
屆時視網頁檔名為何,更改主檔名,以及副檔名究竟為 htm 或 html。

【錯誤寫法】

※不應直接指定 .htm 檔,缺執行檔 .exe
[autorun]
open=index.htm
icon=檔名.ico


※不宜指定檔案總管的絕對路徑(使用者的系統碟未必為 c 或您所寫路徑)
[autorun]
open=C:\Windows\Explorer.exe index.htm
icon=檔名.ico
 
【狀況三】其他檔案格式

其他檔案格式也可以嗎?
原則上都是可以的,只要該台電腦能開的起來。以下以隨身簡報檔為例:
[autorun]
open=explorer.exe 檔名.pps
icon=檔名.ico

如果光碟片放入光碟機時,並沒有自動執行(autorun),請朝以下幾方面檢查:

一、光碟機「自動安插通知」的選項被關閉

以Windows 98舉例,在桌面「我的電腦」圖示上按滑鼠右鍵,選內容,到「裝置管理員」這一頁。

在 CD-ROM 前的 "+" 號上按一下,以便展開,你可以看到安裝在你電腦上的光碟機型號,選取之後,按「內容」,到「設定值」頁,如果需要Autorun 的功能就把「自動安插通知」勾起來,重新開機後這功能就生效。

二、登錄值不正確

與 Autorun 有關的登錄值錯誤也會造成 autorun 功能失效,因此使用登錄編輯器來修改登錄值。

· 按「開始」,到「執行」,輸入 REGEDIT 後按確定。

· 到以下位置檢查NoDriveTypeAutoRun 的內容:

程序代碼 程序代碼
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\Explorer




程序代碼 程序代碼
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
Policies\Explorer


在 NoDriveTypeAutoRun 上按兩下,把它打開,檢查數值資料是不是如以下:

0000 95 00 00 00,如果不是的話,請改成這樣的值,儲存後需要重新開機新的設定才會生效。 

三、光碟片 Autorun.inf 的寫法不合規定

如果只是某些光碟片無法自動執行,這可能就是該光碟的 autorun.inf 檔案有問題,最常見的的一種情形就是自己製作的自動執行光碟,autorun.inf 檔案沒有照規定格式撰寫,造成 Windows 的 CD-ROM 偵測驅動程式(Cdvsd.vxd)無法判斷,Autorun 功能當然失效。

這一點你當然無法改變,只有去找製作這張光碟的人或廠商。

四、驅動程式的問題

這應該只會出現在一些非常古老的光碟機上,新的光碟機應該不會有這個問題。有些古老的光碟機並沒有提供 Protect Mode 的驅動程式,只有 Real Mode 的驅動程式,Windows 的 Autorun 功能只支援 Protect Mode 驅動程式,不支援 Real Mode 驅動程式。

總而言之,就是該光碟機的驅動程式一定要掛在 Config.sys 、Autoexec.bat 裡 Windows 才能抓得到的這種古董光碟機,這類光碟機通常都無法支援 Windows 的 Autorun 功能。

如果你的光碟機 Windows 本身即可抓得到,就不需要在 Config.sys 或 Autoexec.bat 裡再掛上Real Mode 的驅動程式(即 DOS 的驅動程式),除非你有特殊的用途(好比玩一些古老的純 DOS 光碟遊戲 ),如此可以避免降低光碟機的效能。

備註:Autorun 的原理

光碟片一放入光碟機就會自動被執行,主要依靠著兩個檔案,一是光碟片上的 Autorun.inf 檔,另一個是作業系統本身系統檔之一的 Cdvsd.vxd。

Cdvsd.vxd 會隨時偵測光碟機中是否有放入光碟片的動作,如果有的話,便開始尋找光碟根目錄下的 autorun.inf 檔。依照 autorun.inf 檔案裡的敘述,Windows 就會去執行 autorun.inf 裡的 [AUTORUN]區段中,open= 這行所指定執行的檔案。

autorun.inf 是一個純文字格式的檔案,你可以用任何一種文字編輯軟體把它打開,有興趣的話,你可以找一片光碟,開啟它的 autorun.inf 研究看看。

參考資料:
http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/soft/st/winxp/0406/386873.html
http://vhost.shu.edu.tw/~wang/multi/autorun.htm
http://www.takes.tpc.edu.tw/win-10.htm
http://m2.takes.tpc.edu.tw/05xoops/


文章來自: 本站原創
引用通告: 查看所有引用 | 我要引用此文章
Tags:
評論: 0 | 引用: 0 | 查看次數: 15155
發表評論
昵 稱:
密 碼: 游客發言不需要密碼.
內 容:
驗證碼: 驗證碼
選 項:
雖然發表評論不用注冊,但是為了保護您的發言權,建議您注冊帳號.
字數限制 1000 字 | UBB代碼 開啟 | [img]標簽 關閉