1. 程式人生 > >關於win7登錄檔中檔案關聯應用程式的規則

關於win7登錄檔中檔案關聯應用程式的規則

最近在做一個關於應用程式和檔案圖示的工具,過程中需要了解windows如何給檔案選擇展示圖示和預設開啟方式的問題,各種論壇上有關資料查了很多,但是自己一旦嘗試過後就會發現所講的都很表面,不能代表windows真正的處理邏輯。

1、使用者自定義字尾的檔案,讓windows針對它顯示自定義圖示。

    需要自己編碼:在登錄檔HKEY_CLASSES_ROOT下新建一個 ".myext"的項,myext是自定義的字尾名,然後其資料中修改值為一個自定義名稱(比如myexe,一般為自己那個應用程式名稱好識別),然後再在HKEY_CLASSES_ROOT下新建這個名稱的項"myexe",在下面新建DefaultIcon項,資料值那裡,填入含有這個圖示的exe或者dll的路徑,用逗號隔開,後面是圖示資源在exe/dll的資源組中的編號(這個如果自己寫的exe/dll肯定自己知道,如果是別人寫的exe/dll,可用resourcehacker等可執行檔案瀏覽工具檢視圖示的資源組編號),這樣就windows就可以找到這個檔案預設顯示的圖示位置了。如果圖示是.icon檔案,可以直接把icon檔案路徑填進去就不用像exe那樣加資源組編號了。

2、使用者自定義字尾的檔案,讓windows針對它使用自定義應用程式開啟。

這個和上面基本一樣,注意上面defaulticon項同級有個shell項,這個裡面就是開啟方式的資訊。我們可以在defaulticon同級自己建立一個shell項,下面新建一個open項,下面再一個command項,這個項資料值那裡填入啟動它的exe的路徑,後面空格接啟動引數,"%1"會被替換成被雙擊的檔案的路徑。 

3、當前使用者顯示自定義圖示和開啟方式。

上面1和2說了在所有賬戶登錄檔中如此修改,這種情況下所有使用者都可以看到這個圖示和擁有這個開啟方式。如果想僅僅本賬戶可以享有這種特效,可以把上述修改的位置挪到HKEY_CURRENT_USER中去設定,對應的defaulticon和shell位置在HKEY_CURRENT_USER/software/classes下,其餘操作完全一樣。

4、windows如何確定某個檔案用什麼方式開啟。

windows除了根據上面兩個路徑去找到檔案啟動的exe,還會到下面路徑去尋找開啟方式:HKEY_CURRENT_USER\software\microsoft\windows\explore\fileexts,一開就知道這是關於資源管理器裡檔案字尾名的資訊,這個裡面如果找到userchoice項,其鍵裡progid名稱的項如果有鍵值,就和前面一樣,分別到HKEY_CURRENT_USER和HKEY_CLASSES_ROOT兩個大路徑(主鍵)對應的位置中去找是否可以找到開啟的方式,有的話依然可以開啟這個檔案。

現在我們可以嘗試,對於一個.mp3檔案,在三個位置都刪除了註冊資訊,windows就會打不開。而只要有一個位置有正確描述了開啟方式的登錄檔資訊,都可以找到對應的exe開啟它。我們常遇到的瀏覽器被設為預設瀏覽器,毫無疑問就是修改登錄檔這個位置。

覺得有益的朋友可以給我雙擊點贊666  :)  :)