如何從未關聯的檔案類型開啟對話方塊排除應用程式

當使用者嘗試開啟不是任何已註冊檔案類型成員的檔案時, (為未知的檔案類型) ,或當使用者從檔案的快捷方式功能表選擇預設程式時 >,Shell 會呈現子功能表或對話方塊,讓使用者指定用來開啟檔案的程式。

根據預設,任何註冊為HKEY_CLASSES_ROOT\Applications子機碼的應用程式會顯示在 [開啟方式] 對話方塊中。 不論應用程式是否已註冊來處理檔案類型,這些應用程式都會在 Open 中呈現。

若要防止應用程式在應用程式不應該或無法用來開啟特定檔案類型時出現在 [ 開啟] 對話方塊中,請使用本主題中所述的兩種技術之一。

Instructions

步驟 1:

將 NoOpenWith 專案新增至應用程式的子機碼。 當應用程式使用檔案類型時,Windows記錄該資訊以建置建議的程式清單。 此清單會顯示在 [以 子功能表開啟] 中,如下列螢幕擷取畫面所示。

screen shot of shortcut menu with the open with submenu shown

這些建議的應用程式也會顯示在 [開啟方式] 對話方塊的 [建議程式] 部分,如下列螢幕擷取畫面所示。

screen shot of the open with dialog box with recommended programs

注意

如果應用程式已在 OpenWithList 或 OpenWithProgID 中註冊檔案類型,即使已設定 NoOpenWith 專案,它仍會出現在 [建議的程式 ] 清單中。 此外,請記住,無論應用程式是否在建議的程式清單中提供,使用者都可以手動流覽至任何可執行檔。

 

應用程式可以藉由在應用程式的子機碼下指定 NoOpenWith 值來停用此追蹤。

NoOpenWith 專案是空 REG_SZ 值,如下列範例所示。

HKEY_CLASSES_ROOT
   Applications
      MyProgram.exe
         NoOpenWith

設定 NoOpenWith 專案也有下列效果:

  • 除非特別註冊應用程式來處理該檔案類型,否則會防止將檔案釘選到應用程式的跳躍清單。
  • 防止對 SHAddToRecentDocs 函式的任何呼叫,將任何檔案新增至應用程式的快捷方式清單,除非應用程式特別註冊來處理該檔案類型。

步驟 2:

防止應用程式出現在 [ 開啟 方式] 對話方塊中的第二種方式是使用 SupportedTypes 子機碼,明確列出應用程式可開啟的檔案類型副檔名。 這可防止應用程式在 [開啟時開啟 ] 對話方塊中顯示 無法開啟的檔案類型。 它也會導致應用程式如先前所討論,出現在 建議的程式 清單中。

如果應用程式可以將檔案儲存為特定檔案類型,但無法開啟該檔案類型,這個方法特別有用。 呼叫 [儲存] 對話方塊時,應用程式也應該透過IFileDialog::SetOptions來設定FOS_DONTADDTORECENT旗標。 這可讓專案無法新增至跳躍清單的 [最近 ] 或 [ 頻繁 ] 部分。 它也會封鎖在 OpenWithList下追蹤應用程式。

每個支援的擴充功能都會新增為 SupportedTypes 子機碼下的專案,如下列範例所示。 專案的類型 為 REG_SZREG_Null,沒有相關聯的值。

HKEY_CLASSES_ROOT
   Applications
      ApplicationName
         SupportedTypes
            .ext1
            .ext2
            .ext3

如果提供 SupportedTypes 子機碼,只有具有這些副檔名的檔案有資格釘選到應用程式的快捷方式清單,或是在應用程式的 [最近 ] 或 [ 常用 ] 目的地清單中追蹤。

NoOpenWith 專案會覆寫 SupportedTypes 子機碼,並在 [ 開啟方式 ] 對話方塊中隱藏應用程式。