注冊表的文件關(guān)聯(lián)及應(yīng)用
喜歡使用Windows右鍵快捷菜單的朋友可能知道,當(dāng)你選擇了一個文件(或者是文件夾或是系統(tǒng)圖標(biāo))再單擊鼠標(biāo)右鍵,系統(tǒng)就會彈出一個菜單,菜單上面的各種“功能”(或稱“操作”)任你選擇,但是你是否注意到,當(dāng)你安裝一些應(yīng)用軟件之后,你的右鍵菜單是不是膨脹,以winzip為例,安裝winzip之后,文件或文件夾的右鍵菜單當(dāng)中就增加了功能選擇項(xiàng)"Add to Zip"和"Add to xxx.zip",如圖一,看到這個變化,我們不禁要問,這些選擇項(xiàng)是怎么加入的,可不可以自己來添加。帶著這些問題,我們再來看Windows的文件關(guān)聯(lián)。
什么是文件關(guān)聯(lián)呢?通俗地說,就是選擇不同類型的文件時,在其右鍵菜單上顯示的各功能項(xiàng)。每個功能項(xiàng)即對應(yīng)一個關(guān)聯(lián)。選擇了某一功能(操作),系統(tǒng)就去執(zhí)行相應(yīng)的處理程序。至于對什么文件的什么操作對應(yīng)什么樣的處理程序,那都記錄在系統(tǒng)注冊表中。因此,要真正弄清文件關(guān)聯(lián),必須深入研究注冊表。這個問題解決了,我們就可以利用注冊表隨心所欲地為文件建立,修改,刪除關(guān)聯(lián)。
既然關(guān)聯(lián)信息都寫在注冊表中,那么它在注冊表中又是怎樣構(gòu)成的呢?我們不妨打開注冊表,觀察根鍵HKEY_CLASSES_ROOT之下的各個主鍵。(這樣或許更易說明這一點(diǎn))你是不是看到了很多前面有一個點(diǎn)(.),后面好象是文件擴(kuò)展名的主鍵,如圖二所示
DefaultIcon主鍵,它的功能是定義該類文件的默認(rèn)圖標(biāo)。
Shell主鍵,它的功能是本文討論的中心——文件關(guān)聯(lián)之“命根”所在。文件的各種關(guān)聯(lián)都寄生在此“根”之下,正是它定義了該類文件與多個程序相關(guān)聯(lián)。它的默認(rèn)值也很有用,你是否還記得雙擊文件可以將文件打開(對于已注冊的文件),這種打開就是利用了系統(tǒng)注冊表所設(shè)定的默認(rèn)打開方式,即由shell主鍵的默認(rèn)鍵值來控制。它之下的每個主鍵,都可稱作是“關(guān)聯(lián)主鍵”(如圖四)。“關(guān)聯(lián)主鍵”的鍵名是任意的(建議用英文),它的默認(rèn)鍵值也是我們感興趣的。因?yàn)檫@一默認(rèn)鍵值會直接顯示在右鍵菜單中,并且每個“關(guān)聯(lián)主鍵”之下都有一個command主鍵,這個主鍵定義的就是“該關(guān)聯(lián)對應(yīng)的執(zhí)行程序”。如圖五所示,到此文件關(guān)聯(lián)已昭然若揭。
下面我們就以.reg文件(注冊表的腳本文件)為例來說明其關(guān)聯(lián)過程。
首先.reg文件在HKEY_CLASSES_ROOT根鍵之下有一個“擴(kuò)展名主鍵”。.reg其默認(rèn)值為regfile,說明reg類型文件關(guān)聯(lián)的主鍵是regfile。再在該根鍵之下找“標(biāo)識主鍵”regfile,regfile主鍵之下有一個DfaultIcon主鍵,作用是定義reg文件的默認(rèn)圖標(biāo)。其默認(rèn)鍵就是圖標(biāo)的全路徑文件名。如: C:\windows\regedit.exe,1(表示的是regedit.exe中的第2個圖標(biāo))。regfile主鍵之下還有一個上文稱之為“命根”的主鍵shell,reg文件的關(guān)聯(lián)就記錄在shell之中。下面我們就為regt建立一個關(guān)聯(lián)。步驟為:在shell主鍵之下,新建主鍵xxf(名任意),置其默認(rèn)值為:“徐喜峰的文本編輯器”,再在xxf主鍵之下新建主鍵command,置其默認(rèn)值為C:\Windows\Notepad.exe %1,該默認(rèn)值的意義為:用記事本來打開當(dāng)前reg文件。若沒有%1參數(shù),則只運(yùn)行記事本程序,而不打開當(dāng)前文件。設(shè)置完畢,你再看看reg文件的“右鍵菜單”,是不是多了一個“徐喜峰的文本編輯器”選項(xiàng)(如圖六),爽吧!~
以上所說的只是作用于普通文件的關(guān)聯(lián),然而在Windows中,除了文件,還有文件夾及特殊的文檔(如我的電腦,驅(qū)動器,回收站等)。那么這些又該如何設(shè)置關(guān)聯(lián)呢?那就請大家記住在HKEY_CLASSES_ROOT根鍵之下還有以下幾個重要的系統(tǒng)關(guān)聯(lián)主鍵:
*:作用于所有文件,它與“標(biāo)識主鍵”的關(guān)聯(lián)方法一樣。
Directory:作用于一般文件夾。
Folder:作用于所有文件夾,包括特殊文件,如:控制面板,回收站等。
Drive:作用于驅(qū)動器,如A驅(qū),B驅(qū),C驅(qū)。
Unknow:作用于系統(tǒng)不能識別的文件類型,即沒有注冊的文件類型。
最基本的文件關(guān)聯(lián)就談到此處,下面來看看文件關(guān)聯(lián)的應(yīng)用。
應(yīng)用之一:讓MS-DOS方式無處不在。
經(jīng)常用到DOS方式的朋友可能有些厭煩,因?yàn)槊看芜M(jìn)入DOS方式,都要選擇“開始\程序\MS-DOS方式”。利用文件關(guān)聯(lián),我們可以將MS-DOS方式添加到任何文件的“右鍵菜單”中,這樣就省事多了,方法為:
將注冊表展開到HKEY_CLASSES_ROOT\*\shell分支。(在所有文件的“右鍵菜單”中添加MS-DOS方式)新建主鍵“MS-DOS",置其默認(rèn)值為“進(jìn)入MS-DOS方式”,在MS-DOS主鍵之下新建command主鍵,置其默認(rèn)值為:“C:\Windows\command.com”。
另注冊表展開到HKEY_CLASSES_ROOT\Folder\shell分支,(在所有文件夾的“右鍵菜單”中添加MS-DOS方式)設(shè)置同上。
應(yīng)用之二:隱去快捷方式圖標(biāo)中的小箭頭。
如果你覺得快捷方式圖標(biāo)中的小箭頭有點(diǎn)障眼,那么利用關(guān)聯(lián),可以將之去掉,將注冊表展開到HKEY_CLASSES_ROOT\lnkfile分支,將lnkfile主鍵之下的鍵值Isshortcut刪除,再將注冊表展開到HKEY_CLASSES_ROOT\piffile分支,將piffile主鍵之下的鍵值Isshortcut刪除,即大功告成。
應(yīng)用之三:用記事本來編輯bat文件。
有時想編輯bat文件,而習(xí)慣性地雙擊它,這一雙擊,并沒有將它打開編輯,而是將它執(zhí)行,讓人甚為惱火。利用注冊表的文件關(guān)聯(lián),可以將之改變。將注冊表展開到HKEY_CLASSES_ROOT\batfile\shell分支,將shell主鍵的默認(rèn)值由open改為edit即可。
應(yīng)用之四:更改某類文件的默認(rèn)圖標(biāo)。
以txt文件為例,將txt文件的圖標(biāo)改為“我的電腦”的圖標(biāo)。將注冊表展開到HKEY_CLASSES_ROOT\txtfile\DefaultIcon分支,將主鍵DefautIcon的默認(rèn)鍵值改為:"C:\Windows\explorer.exe,0" 即可。
應(yīng)用之五:為所有文件增加“打開方式”。
將注冊表展開到HKEY_CLASSES_ROOT\*\shell分支,新建主鍵open_as,置其默認(rèn)值為“選擇打開方式”,在Open_As主鍵之下新建主鍵command,置其默認(rèn)值為:"C:Windows\rundll32.exe shell32.dll , openAs_RunDll %1"
應(yīng)用之六:將“關(guān)機(jī)”加入到右鍵菜單。
將注冊表展開到HEKY_CLASSES_ROOT\Directory\shell分支,新建主鍵close,置其默認(rèn)值為“關(guān)閉系統(tǒng)”,再在close主鍵之下,新建主鍵command,置其默認(rèn)值為:"C:\Windows\rundll32.exe user.exe, exitwindows"
以上六例應(yīng)用,總體上能夠概述文件關(guān)聯(lián)的基本結(jié)構(gòu)和基本框架,弄清了文件關(guān)聯(lián)的結(jié)構(gòu)與框架,自己再增加關(guān)聯(lián)就是小菜一碟了。只要你有興趣,你可以將你的右鍵菜單加得滿滿的。如果你想了解更深一層次的文件關(guān)聯(lián),那就請你參閱有關(guān)windows注冊表方面的書籍與資料,或與我聯(lián)系,我的Email是amen.twty@china.net。在文章結(jié)束之前,還告訴大家一點(diǎn)小小的訣竅:那就是注冊表在作過修改之后,很多場合需要重新啟動才能生效。這里我告訴大家一個不需要重啟但又能快速更改注冊表的方法:選擇“開始\關(guān)閉系統(tǒng)”,在彈出“關(guān)閉系統(tǒng)”框之后,按Ctrl+Alt+Del 組合鍵,出現(xiàn)“結(jié)束任務(wù)”框,選擇其中的“Explorer”,再單擊“結(jié)束任務(wù)”,等待一會兒(10秒左右),就會出現(xiàn)一個“結(jié)束任務(wù)”確認(rèn)框,點(diǎn)擊“結(jié)束任務(wù)”按鈕即可