2009-10-12 107 views
7

我得到了如何去做,而我之前去過http://www.codeproject.com/KB/vb/VBFileAssociation.aspx。我的問題是關於做什麼,是否有可能扭轉它?如果你不知道你的程序將在哪裏,你現在只是在測試它?有沒有什麼方法可以「找到」你的程序,或者是一種簡單的方法來編輯它的打開位置?對於這個問題,是否有可能知道文件是否已經關聯,是否需要重新關聯?最後,你如何設置它使用的.ico文件?將文件擴展名與程序關聯

感謝您的幫助,我幾乎一無所知註冊表和它混淆了我笑......

回答

17

爲了簡便起見,我使用的是假的根密鑰。實際上,將Hive_Key替換爲系統默認設置的HKEY_LOCAL_MACHINE,或者對於每個用戶設置替換HKEY_CURRENT_USER。這些鍵中的任何一個都允許存在,或者兩者兼有。如果它們都存在,HKCU鍵優先。

要將擴展名與文件類型相關聯,您需要通過設置默認鍵值來設置擴展鍵的默認值(Hive_Key\Software\Classes\.ext)與所選文件類型。

在文件類型中找到啓動的實際程序以及其他文件類型的詳細信息。文件類型通過稱爲ProgID(「程序標識符」,它是類標識符的更易於閱讀的版本)的簡稱來標記。在Hive_Key\Software\Classes中找到ProgID鍵,此插圖的示例值可能是ext_auto_key

ProgID可能有一個默認值,這將是對資源管理器中文件類型的友好描述(例如「Microsoft Word文檔」)。您應該確保自己選擇一種用戶易於理解的描述。

ProgID可能有一個子項DefaultIcon,這是存儲文件類型圖標的位置。該圖標路徑是該鍵的默認值。

ProgID鍵可能包含子文件shell,它將包含文件上的上下文菜單項以及該上下文菜單項將調用的程序。與ProgID的默認值類似,動詞鍵的默認值是將在上下文菜單中顯示的文本。此shell鍵的默認值具有默認動詞鍵名稱,該名稱是用戶雙擊文件時調用的動詞。

這些上下文菜單項是Verbs。對於我們的示例,使用記事本打開文件的動詞如下所示: Hive_Key\Software\Classes\ext_auto_file\shell\open\command默認值notepad.exe %1

這是你放置程序路徑的地方。如果你的程序在系統PATH中,如notepad.exe所示,你不需要來指定完整的路徑。在更可能的情況下,你需要指定你的exe的路徑。出於測試目的,您可以將其設置爲您的構建目錄。

您問及如何檢查這些東西,這可以通過首先檢查擴展鍵的默認值以獲取ProgID,然後檢查ProgID鍵的shell子鍵以獲取默認動詞,然後檢查\shell\verb\command獲得啓動程序的路徑。

打開regedit.exe並瀏覽其他文件類型的註冊表鍵可能會有所啓發,以更好地瞭解它是如何工作的。

另外,如果特定的擴展名不受控制面板中默認(默認程序)設置的程序控制,上述內容全部有效。您可以通過檢查密鑰HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice的存在來檢查此狀態。如果是,您需要在您的自定義設置生效之前撤消默認程序控制。這可以通過刪除UserChoice子項來完成。

+0

Regedit嚇了我一下大聲笑。謝謝您的幫助! – Cyclone 2009-10-13 15:13:22

相關問題