関連付けられていないファイルの種類の [開く] ダイアログ ボックスからアプリケーションを除外する方法

ユーザーが、登録されているファイルの種類 (不明なファイルの種類) のメンバーではないファイルを開こうとしたとき、またはユーザーが [プログラムで開く] または [開く>] を選択すると、ファイルのショートカット メニューから既定のプログラムを選択すると、シェルによってサブメニューまたはダイアログ ボックスが表示され、ユーザーはファイルを開くために使用するプログラムを指定できます。

既定では、HKEY_CLASSES_ROOT\Applications のサブキーとして登録されているアプリケーションは、[開く] ダイアログ ボックスに表示されます。 これらのアプリケーションは、アプリケーションがファイルの種類を処理するために登録されているかどうかに関係なく、 Open で表示されます。

アプリケーションが特定のファイルの種類を く必要がある場合、またはアプリケーションを使用できない場合に [開く] ダイアログ ボックスにアプリケーションが表示されないようにするには、このトピックで説明する 2 つの手法のいずれかを使用します。

手順

手順 1:

NoOpenWith エントリをアプリケーションのサブキーに追加します。 アプリケーションがファイルの種類を使用する場合、Windowsはその情報を記録して推奨プログラムの一覧を作成します。 この一覧は、次のスクリーン ショットに示すように、[ Open with]\(開く\ ) サブメニューに表示されます。

screen shot of shortcut menu with the open with submenu shown

これらの推奨アプリケーションは、次のスクリーン ショットに示すように、[プログラムで開く] ダイアログ ボックスの [推奨プログラム] の部分にも表示されます。

screen shot of the open with dialog box with recommended programs

Note

アプリケーションがファイルの種類として OpenWithList または OpenWithProgIDs に登録されている場合は、NoOpenWith エントリが設定されている場合でも、 推奨プログラム の一覧に表示されます。 また、アプリケーションが推奨プログラムの一覧で提供されているかどうかに関係なく、ユーザーは任意の実行可能ファイルを手動で参照できることに注意してください。

 

アプリケーションでは、アプリケーションのサブキーの下に NoOpenWith 値を指定することで、この追跡を無効にすることができます。

NoOpenWith エントリは、次の例に示すように空 のREG_SZ 値です。

HKEY_CLASSES_ROOT
   Applications
      MyProgram.exe
         NoOpenWith

NoOpenWith エントリを設定すると、次の効果もあります。

  • アプリケーションがそのファイルの種類を処理するために特に登録されていない限り、ドラッグ アンド ドロップでアプリケーションのジャンプ リストにファイルをピン留めできないようにします。
  • アプリケーションがそのファイルの種類を処理するために特に登録されていない限り、共通ファイル ダイアログ ボックスと SHAddToRecentDocs 関数の呼び出しによって、アプリケーションのジャンプ リストにファイルが追加されないようにします。

手順 2:

アプリケーションが [ く] ダイアログ ボックスに表示されないようにする 2 つ目の方法は、 SupportedTypes サブキーを使用して、アプリケーションで開くことができるファイルの種類の拡張子を明示的に一覧表示することです。 これにより、開くことができないファイルの種類の [開 ] ダイアログ ボックスにアプリケーションが表示されなくなります。 また、前に説明したように、アプリケーションが 推奨プログラム の一覧に表示されます。

この方法は、アプリケーションが特定のファイルの種類としてファイルを保存できるが、そのファイルの種類を開くことができない場合に特に便利です。 アプリケーションは、[保存] ダイアログ ボックスを呼び出すときに、IFileDialog::SetOptions を使用して FOS_DONTADDTORECENT フラグを設定する必要もあります。 これにより、アイテムがジャンプ リストの 最近 の部分または 頻繁 な部分に追加されなくなります。 また、 OpenWithList でアプリケーションが追跡されるのをブロックします。

サポートされている各拡張機能は、次の例に示すように 、SupportedTypes サブキーの下にエントリとして追加されます。 エントリの種類は REG_SZ または REG_NULLで、関連付けられた値はありません。

HKEY_CLASSES_ROOT
   Applications
      ApplicationName
         SupportedTypes
            .ext1
            .ext2
            .ext3

SupportedTypes サブキーが指定されている場合、これらの拡張子を持つファイルのみが、アプリケーションのジャンプ リストにピン留めしたり、アプリケーションの最近または頻繁な宛先リストで追跡したりできます。

NoOpenWith エントリは 、SupportedTypes サブキーをオーバーライドし、[開 ] ダイアログ ボックスでアプリケーションを非表示にします。