Windows Confidential
檔案類型] 對話方塊發生什麼事?
Raymond Chen
回在 Windows 95 舊的天,時發生頁面稱為列出所有已註冊的檔案類型和其相關聯的動詞命令的檔案類型的資料夾選項] 屬性工作表中。該份子發生了什麼相隔事?
答案是:世界上變更,而且它所顯示的資訊了 wasn’t 真正準確。
實際上,它所顯示的資訊甚至在撰寫時的時間 wasn’t 甚至完全正確。
檔案類型] 對話方塊支援僅所謂靜態登錄; 是,其執行包含執行命令列,或執行 DDE 命令的動詞命令。在 Windows 3.1 中那些已幾乎只有兩種登錄使檔案類型] 對話方塊是簡短永世一下 Windows 95 殼層命名空間最多顯示和加入整體之前至少目前為檔案類型動詞組新的執行動作的方式。比方說動詞命令殼層內容功能表處理常式 (IContextMenu) 透過加入已不會顯示由檔案類型] 對話方塊。如果您去檢視可使用動詞命令的磁碟機,您可以看到這個:唯一會在對話方塊中顯示最多已找到。[格式] 和 [複製磁片] 動詞命令已地方看到,因為它們以程式設計的方式提供的 COM 物件。(在特別因為這些命令套用只於特定類型的磁碟機)。
現在,檔案類型] 對話方塊是在一個 pickle 的位元。內容功能表動詞命令 aren’t 實際儲存在任何地方 ; 它們於執行階段時產生的程式碼內殼層延伸。有 ’s 沒有方法可以提出一個內容功能表副檔名、 「 請給我可能會新增項目的所有動詞命令的清單 」。嗯,比方之一是內容功能表擴充功能可能不知道,; 某些內容功能表擴充功能產生根據使用者所按的檔案名稱的動詞命令。捷徑 don’t 有特定清單上的動詞命令或甚至取得或設定動詞命令模式 ; 它們只是公開隸屬於其他檔案類型的動詞命令。(,例如當您按一下 [上一個文字檔案的捷徑,內容功能表顯示文字檔案動詞命令。如果快顯內容功能表處理常式已產生之所有潛在的動詞命令的清單,它就必須列出所有的動詞命令,從所有的檔案類型!)
即使了一種方式取得與檔案類型相關聯之動詞命令的完整清單會受到 decidedly unhelpful 介面來新增或修改它們。因為殼層延伸是 COM 物件,註冊是藉由將關聯的檔案類型的 GUID。怎麼樣,像您預期使用者要在建立內容功能表動詞命令的各式標點符號與 32 個十六進位數字輸入。及,只註冊動詞命令 ; 它們也必須建立實作 IContextMenu 介面的 DLL。撰寫線上說明,祝你好運。
好了,所以也許它是殼層命名空間擴充 don’t 會顯示在 [檔案類型] 對話方塊是個好主意。但該 DDE 東西呢?DDE 是簡短的動態資料交換,但名稱真的 doesn’t 釐清的任何項目。動態資料交換是允許兩個程式交換資料或傳送命令到彼此的 Windows 3.0 天內所開發的資料傳輸機制。建立所謂的 DDE 對話需要的檔案類型] 對話方塊說明在加密方面,例如 DDE 訊息]、 [應用程式 (該,儘管名稱建議什麼,不是您想要執行可執行檔名稱)]、 [DDE 應用程式尚未執行] 及 [主題的資訊片段的號碼。沒有任何這些術語表示以正常的人類被任何項目 ; 它們可能也有被呼叫魔法 1 到魔法 4。
DDE 是一天的多工,回當您 didn’t 有擔心停止處理訊息的應用程式,因為事實,執行您的程式碼是用的其他每個人已處理訊息的合作性為設計的古老技術。但是,轉換為 32 位元 Windows 與 pre-emptive 多工,這個假設不再持有,則為 True。在特別停止處理訊息的應用程式防止訊息廣播,無法完成,這是因為非常第一個步驟中建立 DDE 對話廣播訊息,尋找願意與您交談視窗的 DDE 的問題。一種無法回應程式防止開啟 DDE 基礎的文件。基於這個理由 DDE 已不再註冊殼層動詞命令的建議的方法。
打破後方的 [檔案類型] 對話方塊的 straw 已導入的使用者帳戶控制 (UAC) 在 Windows Vista 中。由於檔案類型註冊是全域,修改它們需要依預設會停用的系統管理權限。結果的檔案類型] 對話方塊也會有需要提高權限,才能執行其工作。指定的檔案類型] 對話方塊已已經已知為不完整且無法使用由一般的人類家園,並且應用程式通常未幹得好仍要註冊其檔案類型的 didn’t 值得,似乎額外的工作,使檔案類型] 對話方塊支援提高權限。功能對話方塊用來提供是主要的檔案類型重複按 [開啟方式] 的功能表及新關聯的檔案類型或通訊協定與兩者都是最容易使用比輸入魔法單字中四個 cryptically 名為某個特定程式控制台中的編輯方塊。
但如果您確實想傳統的方式建立的檔案類型,您仍然可以執行 RegEdit。我希望您記得如何設定那些魔法的單字。
Raymond Chen's 的 Web 站台舊的新項目和相同其標題為的書籍 (Addison-Wesley,2007年) 處理 Windows 歷程記錄、 Win32 程式設計和句子開頭一個問號。