發新話題

《資訊》註冊表的文件關聯及應用

《資訊》註冊表的文件關聯及應用

[glow=570,#8B008B,6]註冊表實用詳解[/glow]
  喜歡使用Windows右鍵快捷菜單的朋友可能知道,當你選擇了一個文件(或者是文件夾或是系統圖標)再單擊鼠標右鍵,系統就會彈出一個菜單,菜單上面的各種「功能」(或稱「操作」)任你選擇,但是你是否注意到,當你安裝一些應用軟件之後,你的右鍵菜單是不是膨脹,以winzip為例,安裝winzip之後,文件或文件夾的右鍵菜單當中就增加了功能選擇項"Add to Zip"和"Add to xxx.zip",如圖一,看到這個變化,我們不禁要問,這些選擇項是怎麼加入的,可不可以自己來添加。帶著這些問題,我們再來看Windows的文件關聯。

  什麼是文件關聯呢?通俗地說,就是選擇不同類型的文件時,在其右鍵菜單上顯示的各功能項。每個功能項即對應一個關聯。選擇了某一功能(操作),系統就去執行相應的處理程序。至於對什麼文件的什麼操作對應什麼樣的處理程序,那都記錄在系統註冊表中。因此,要真正弄清文件關聯,必須深入研究註冊表。這個問題解決了,我們就可以利用註冊表隨心所欲地為文件建立,修改,刪除關聯。
  既然關聯信息都寫在註冊表中,那麼它在註冊表中又是怎樣構成的呢?我們不妨打開註冊表,觀察根鍵HKEY_CLASSES_ROOT之下的各個主鍵。(這樣或許更易說明這一點)你是不是看到了很多前面有一個點(.),後面好像是文件擴展名的主鍵,如圖二所示

  如.bat,.txt,.lnk,.bmp等。我們把這一類的主鍵稱之為「擴展名主鍵」,每個擴展名主鍵都有一個默認鍵值。如:主鍵.bat的默認值為batfile; .lnk主鍵的默認值為lnkfile。舉了這兩個例子,你是否看出了其中的規律。即:若「擴展名主鍵」名為.xxx(xxx為某一類文件的擴展名),那麼它的默認鍵值就為xxxfile。當然並不是所有的默認值都是這樣,也可能多個主鍵對應同一默認值。比如:主鍵.jpeg和主鍵.jpg,它們的默認值jpgfile;.html和htm的默認值都為htmlfile。為什麼要說這麼多的擴展名主鍵的默認值呢?其中原因且聽我慢慢道來。這個默認鍵值的作用就非同小可了,它可是文件關聯的橋樑和紐帶,是它將文件的類型(以擴展名來標識文件類型)與文件的關聯聯繫起來。不信,你可以將某一「擴展名主鍵」的默認鍵值亂改一通,你就會發現,該類文件的許多關聯項在右鍵菜單中消失了。既然這個重要的默認鍵值起了一個橋樑的作用,那麼橋樑的另一端——文件的關聯又是如何定義的呢?我們繼續看註冊表,讓它來給我們解釋。依然是在HKEY_CLASSES_ROOT根鍵之下。我們可以看到該根鍵之下有如下主鍵。如:batfile,txtfile,lnkfile 等。(如圖三)看到沒有

這些主鍵好像都是剛才我們所說的「擴展名主鍵」的默認值。不錯,上述默認值在此處正好變成了主鍵名——這就是橋樑。我們把這一類的主鍵稱為「標識主鍵」。一般而言,在「標識主鍵」之下有以下幾個重要主鍵:(如圖四)

  DefaultIcon主鍵,它的功能是定義該類文件的默認圖標。
Shell主鍵,它的功能是本文討論的中心——文件關聯之「命根」所在。文件的各種關聯都寄生在此「根」之下,正是它定義了該類文件與多個程序相關聯。它的默認值也很有用,你是否還記得雙擊文件可以將文件打開(對於已註冊的文件),這種打開就是利用了系統註冊表所設定的默認打開方式,即由shell主鍵的默認鍵值來控制。它之下的每個主鍵,都可稱作是「關聯主鍵」(如圖四)。「關聯主鍵」的鍵名是任意的(建議用英文),它的默認鍵值也是我們感興趣的。因為這一默認鍵值會直接顯示在右鍵菜單中,並且每個「關聯主鍵」之下都有一個command主鍵,這個主鍵定義的就是「該關聯對應的執行程序」。如圖五所示,到此文件關聯已昭然若揭。

  下面我們就以.reg文件(註冊表的腳本文件)為例來說明其關聯過程。
  首先.reg文件在HKEY_CLASSES_ROOT根鍵之下有一個「擴展名主鍵」。.reg其默認值為regfile,說明reg類型文件關聯的主鍵是regfile。再在該根鍵之下找「標識主鍵」regfile,regfile主鍵之下有一個DfaultIcon主鍵,作用是定義reg文件的默認圖標。其默認鍵就是圖標的全路徑文件名。如: C:\windows\regedit.exe,1(表示的是regedit.exe中的第2個圖標)。regfile主鍵之下還有一個上文稱之為「命根」的主鍵shell,reg文件的關聯就記錄在shell之中。下面我們就為regt建立一個關聯。步驟為:在shell主鍵之下,新建主鍵xxf(名任意),置其默認值為:「徐喜峰的文本編輯器」,再在xxf主鍵之下新建主鍵command,置其默認值為C:\Windows\Notepad.exe %1,該默認值的意義為:用記事本來打開當前reg文件。若沒有%1參數,則只運行記事本程序,而不打開當前文件。設置完畢,你再看看reg文件的「右鍵菜單」,是不是多了一個「徐喜峰的文本編輯器」選項(如圖六),爽吧!~

  以上所說的只是作用於普通文件的關聯,然而在Windows中,除了文件,還有文件夾及特殊的文檔(如我的電腦,驅動器,回收站等)。那麼這些又該如何設置關聯呢?那就請大家記住在HKEY_CLASSES_ROOT根鍵之下還有以下幾個重要的系統關聯主鍵:
  *:作用於所有文件,它與「標識主鍵」的關聯方法一樣。
  Directory:作用於一般文件夾。
  Folder:作用於所有文件夾,包括特殊文件,如:控制面板,回收站等。
  Drive:作用於驅動器,如A驅,B驅,C驅。
  Unknow:作用於系統不能識別的文件類型,即沒有註冊的文件類型。
  最基本的文件關聯就談到此處,下面來看看文件關聯的應用。
  應用之一:讓MS-DOS方式無處不在。
  經常用到DOS方式的朋友可能有些厭煩,因為每次進入DOS方式,都要選擇「開始\程序\MS-DOS方式」。利用文件關聯,我們可以將MS-DOS方式添加到任何文件的「右鍵菜單」中,這樣就省事多了,方法為:
將註冊表展開到HKEY_CLASSES_ROOT\*\shell分支。(在所有文件的「右鍵菜單」中添加MS-DOS方式)新建主鍵「MS-DOS",置其默認值為「進入MS-DOS方式」,在MS-DOS主鍵之下新建command主鍵,置其默認值為:「C:\Windows\command.com」。
另註冊表展開到HKEY_CLASSES_ROOT\Folder\shell分支,(在所有文件夾的「右鍵菜單」中添加MS-DOS方式)設置同上。
  應用之二:隱去快捷方式圖標中的小箭頭。
  如果你覺得快捷方式圖標中的小箭頭有點障眼,那麼利用關聯,可以將之去掉,將註冊表展開到HKEY_CLASSES_ROOT\lnkfile分支,將lnkfile主鍵之下的鍵值Isshortcut刪除,再將註冊表展開到HKEY_CLASSES_ROOT\piffile分支,將piffile主鍵之下的鍵值Isshortcut刪除,即大功告成。
  應用之三:用記事本來編輯bat文件。
  有時想編輯bat文件,而習慣性地雙擊它,這一雙擊,並沒有將它打開編輯,而是將它執行,讓人甚為惱火。利用註冊表的文件關聯,可以將之改變。將註冊表展開到HKEY_CLASSES_ROOT\batfile\shell分支,將shell主鍵的默認值由open改為edit即可。
  應用之四:更改某類文件的默認圖標。
  以txt文件為例,將txt文件的圖標改為「我的電腦」的圖標。將註冊表展開到HKEY_CLASSES_ROOT\txtfile\DefaultIcon分支,將主鍵DefautIcon的默認鍵值改為:"C:\Windows\explorer.exe,0" 即可。
  應用之五:為所有文件增加「打開方式」。
  將註冊表展開到HKEY_CLASSES_ROOT\*\shell分支,新建主鍵open_as,置其默認值為「選擇打開方式」,在Open_As主鍵之下新建主鍵command,置其默認值為:"C:Windows\rundll32.exe shell32.dll , openAs_RunDll %1"
  應用之六:將「關機」加入到右鍵菜單。
  將註冊表展開到HEKY_CLASSES_ROOT\Directory\shell分支,新建主鍵close,置其默認值為「關閉系統」,再在close主鍵之下,新建主鍵command,置其默認值為:"C:\Windows\rundll32.exe user.exe, exitwindows"
  以上六例應用,總體上能夠概述文件關聯的基本結構和基本框架,弄清了文件關聯的結構與框架,自己再增加關聯就是小菜一碟了。只要你有興趣,你可以將你的右鍵菜單加得滿滿的。如果你想瞭解更深一層次的文件關聯,那就請你參閱有關windows註冊表方面的書籍與資料,或與我聯繫,我的Email架email]Oamen.twty@china.net[/email]。在文章結束之前,還告訴大家一點小小的訣竅:那就是註冊表在作過修改之後,很多場合需要重新啟動才能生效。這裡我告訴大家一個不需要重啟但又能快速更改註冊表的方法:選擇「開始\關閉系統」,在彈出「關閉系統」框之後,按Ctrl+Alt+Del 組合鍵,出現「結束任務」框,選擇其中的「Explorer」,再單擊「結束任務」,等待一會兒(10秒左右),就會出現一個「結束任務」確認框,點擊「結束任務」按鈕即可。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。