WIN7/XP用註冊表關聯指定後綴名和打開程序(手動【圖文】和C編程兩種實現)

前言:

本文是基本原理介紹和手動的操作。程序實現該功能在http://blog.csdn.net/arvon2012/article/details/7839556,同時裏面有完整代碼的下載。

 

今天在開發程序的時候,需要做後綴和程序的關聯,所以寫下詳細的操作過程跟大家分享。有什麼意見歡迎留言!

目標:我這次要自定義一個後綴名(.seve),並且自己開發一個負責打開這種後綴文件的程序(Opo.exe)。當雙擊後綴名爲我自定義的文件時,自動運行我的程序(Opo.exe)。

 

概要原理:
對windows來說,雙擊一個文件時,windows會根據他註冊表中的記載打開和當前文件後綴名關聯的程序。如默認情況下:.txt關聯的是NODEPAD.exe,.doc關聯的是word。所以要進行關聯,就是要做註冊表的修改。修改註冊表,可以通過手動方式,也可通過註冊表編程實現。

 

那麼註冊表中是怎麼把指定的後綴和指定的程序關聯的?
我們用實例講解,這裏的系統是XP(WIN7系統的註冊表和XP至少在這裏用到的地方都是一樣的),點擊開始——運行,輸入regedit(這個命令用了很久,但是我比較笨,後來纔看出來其實就是register edit(註冊表編輯)的簡寫)。
打開後可以看到幾個“鍵”,我們關心的和後綴名相關的,他們在HKEY_CLASSES_ROOT下面。點開後,點編輯——查找,然後在查找欄中輸入.txt就自動跳轉到.txt所在的位置,大家在右邊可以看到如下內容:

按順序講下這三個值:
1.(默認):在關聯中最重要的一個值,決定了當前後綴的文件交給誰並且怎麼處理,這裏大家看到的內容是“txtfile”。其實這個.txt鍵只是相當於一個索引,該鍵中並沒有實際的處理說明,而實際的處理都交給了另一個鍵,那個鍵的名字就是這裏的“(默認)”給出的。(着急的童鞋現在就可以在註冊表中搜txtfile鍵)


2Content Type:這裏指定了這個文件內容是什麼類型,這個值可以接受很多參數,這個參數的列表可以再MSDN中查找Content Type看到。這個值存在的意義是當系統要處理這個文件內容的時候,和這個後綴名關聯在一起的程序會根據這個值決定如何打開並展現文件中的內容。


3.PerceivedType:這個值也是一個類型的標記。他的用處呢?舉個例子大家就有感覺了,如果這個值的內容是video的時候。我們打開一些視頻播放器,許多播放器第一次打開很可能會搜索電腦硬盤,尋找可以播放的文件並展現在“播放列表”中,而這個搜索過程就是根據這個值進行的。

 

下面跳轉到負責真正處理和打開工作的鍵中,對於我們的例子.txt,這個處理鍵,上面已經說了,就是txtfile,找到該鍵,並且全部展開,可以看到如下內容:

PS:在關聯後綴名和打開程序中,都是兩個鍵成對工作的,比如這裏的.txt和txtfile鍵。我們暫且稱第一個是“後綴鍵”第二個是“處理鍵”。這樣方便後面表達。

上面的圖中,大家可以看到txt文件的處理鍵的層次內容。選中最頂層的txtfile看右邊界面顯示的內容:


1.(默認):這裏是文件類型的說明,大家右擊文件圖標,選擇屬性的時候,在屬性中的文件類型框中可以看到這個值。
2.EditFlags:標識這個文件的讀寫權限,比如是隻讀,還是可讀寫。。。等等,這個在文件屬性裏也能修改。
3.FriendlyTypeName:這個值是應用程序的友好名稱(暈菜,什麼是友好名稱?這裏先說下不友好名稱是什麼:應用程序的ID,沒錯,就是看也看不懂的那一串數字,所以你在這裏看到的這個值已經很適合人腦去理解了,很友好!)。這個值其實就是說明這個處理鍵對應的應用程序是哪個,大家打開文件屬性找一找,也能找到這個值的身影。不過記住,這個值可不是起決定作用。決定作用在子鍵中。

現在回到txtfile鍵層次圖中:

可以看到這個處理鍵的直接子鍵有兩個:1.DefaultIcon這一類文件的默認圖標。2.Shell,存放了對這類文件進行實際操作時,執行的命令。

我們直接看重點:

shell鍵:
在這個鍵中,可以看到三個子鍵:open,print,printto,這裏列出的可以執行的命令,其實和鼠標右擊這個文件時候,彈出的菜單中的命令對應。我們關心的是打開操作,所以這裏我們看下open鍵下的command裏存的是什麼:
默認鍵:%SystemRoot%\system32\NOTEPAD.EXE %1
看到木有?這裏真正的指定了由誰來打開這種後綴的文件。這裏是NOTEPAD.EXE。
和open鍵平行的建都是一些操作,大家感興趣可以一個個打開研究研究。

 

 

實現關聯
既然知道註冊表中後綴和程序是怎麼關聯的,我們就也來關聯一組。
後綴:opo
程序:Opo.exe

1.手動方式
我們先手動創建,之後再說程序實現,原理上都一樣,只不過程序的比較帥,當然也比較高端(在某些應用場合)。
鼠標右擊HKEY_CLASSES_ROOT,彈出菜單,選新建——項

1.後綴鍵
創建:然後會創建一個鍵,我們給它輸入名字,這裏的名字就是後綴名:.opo。
寫值:選中該鍵,然後在右邊的界面中雙擊(默認),彈出對話框,我們在值中輸入處理鍵的名字:opofile。
後綴鍵完成!


2.處理鍵
創建:和上面一樣,名字寫成上面的鍵的(默認)值opofile
我們就是要關聯打開應用,其他亂七八糟的東西我們先不關心,所以如下:

右擊opofile,在opofile鍵下創建鍵shell,shell下創建鍵open(定義打開命令),open下創建子鍵command。
寫值:選中command,然後雙擊右邊的默認,在彈出框中的寫入程序Opo.exe的位置後面加上%1,我的是這樣的:

 

 

測試:
現在隨便找個小程序,名字改成Opo.exe,然後自己創建一個文本文件,重命名成後綴爲opo的文件。然後雙擊這個文件,額。。。。
這就是所謂的後綴名和程序的關聯,完成!嘿嘿

 

C代碼實現下次寫,和註冊表編程入門一起,抱歉,嘿

技術相關更多文章猛擊:哇啦天堂論壇技術區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章