如何從無關聯的檔案類型的 [用...開啟 對話框] 中排除應用程式
當使用者嘗試開啟一個不屬於任何已註冊檔案類型的檔案(即未知檔案類型)時,或當使用者在檔案的快捷方式功能表中選擇 「以 開啟」或 「開啟」->「選擇預設程式」 時,Shell 會呈現一個子功能表或對話框,讓使用者指定用來開啟檔案的程式。
根據預設,任何註冊為 HKEY_CLASSES_ROOT\Applications 子機碼的應用程式,會顯示在 [以 開啟] 對話框中。 不論應用程式是否已註冊以處理檔案類型,這些應用程式都會在 Open 中呈現。
若要防止應用程式出現在 [以 開啟] 對話框中,當應用程式不應該或無法用來開啟特定文件類型時,請使用本主題中所述的兩種技術之一。
操作說明
步驟 1:
將 NoOpenWith 項目新增至應用程式的子機碼。 當應用程式使用檔類型時,Windows 會記錄該資訊,以建置 建議程式 清單。 此清單會顯示在 Open 中,並顯示 子功能表,如下列螢幕快照所示。
這些建議的應用程式也會顯示在 [建議程式] 部分的 [開啟] 對話框中,如下列螢幕快照所示。
使用建議程序開啟對話框的
注意
如果應用程式已在 OpenWithList 或 OpenWithProgIDs 中註冊檔案類型,即使設定了 NoOpenWith 項目,它也會出現在 建議程式 列表中。 此外,請記住,無論應用程式是否在建議的程式清單中提供,使用者都可以手動流覽至任何可執行檔。
應用程式可以在應用程式的子機碼下指定 NoOpenWith 值,以停用此追蹤。
NoOpenWith 項目是一個空的 REG_SZ 值,如下列範例所示。
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
NoOpenWith
設定 NoOpenWith 項目後,會產生以下效果:
- 除非應用程式特別註冊以處理該檔案類型,否則防止透過拖放將檔案釘選到應用程式的跳躍清單中。
- 防止通用檔案對話框和任何呼叫 SHAddToRecentDocs 函式,將任何檔案新增至應用程式的跳點清單,除非應用程式特別註冊來處理該檔案類型。
步驟 2:
防止應用程式出現在 Open with 對話框中的第二種方式是使用 SupportedTypes 子機碼來明確列出應用程式可以開啟的檔案類型擴展名。 這可防止應用程式在無法開啟的檔案類型的 [開啟] 對話框中出現。 它也會導致應用程式出現在 建議程式 清單中,如先前所述。
如果應用程式可以將檔案儲存為特定文件類型,但無法開啟該檔案類型,這個方法特別有用。 在 呼叫 [儲存] 對話框時,應用程式也應該透過 IFileDialog::SetOptions 設定FOS_DONTADDTORECENT旗標。 這可避免項目新增至 [最近 ] 或 [常用 ] 部分的跳躍清單。 它也會防止應用程式在 OpenWithList底下被追蹤。
每個支援的延伸模組會新增作為 SupportedTypes 子機碼底下的一個項目,如下列範例所示。 項目的類型為 REG_SZ 或 REG_NULL,沒有相關聯的值。
HKEY_CLASSES_ROOT
Applications
ApplicationName
SupportedTypes
.ext1
.ext2
.ext3
如果提供 SupportedTypes 子機碼,則只有具有這些擴展名的檔案才有資格釘選到應用程式的 Jump List 或追蹤在應用程式的 最近 或 經常 目的地清單中追蹤。
NoOpenWith 項目會覆寫 SupportedTypes 子機碼,並將應用程式隱藏在 [Open with] 對話框中。