ファイルの関連付けのベスト プラクティス
次の一覧は、ファイルの関連付けを操作するときに使用する必要がある推奨されるベスト プラクティスです。
- レジストリからファイルの関連付けをコピーしないでください
- 可能な限りレジストリへのパスをHard-Codingしないようにする
- 展開する文字列を引用符で常に折り返す
- 自動再生/自動実行とファイルの関連付けを混同しない
- インターネットエクスプローラー MIMEデータベースをファイルの関連付けと混同しないでください
- 適切な形式とバージョン管理された ProgID を使用する
- 短いファイル名拡張子を使用しない
- IANA MIME データベースに新しいファイルの種類を登録する
- ファイルの関連付けのために Windows Web サービスにサインアップする
- 関連トピック
レジストリからファイルの関連付けをコピーしないでください
レジストリから既存のファイルの関連付けをコピーしないことをお勧めします。 これにより、多くの場合、形式が正しくないファイルの関連付けが伝達されます。 代わりに、「 ファイル関連付けのサンプル シナリオ」で説明されている手順に従う必要があります。
可能な限りレジストリへのパスをHard-Codingしないようにする
プログラムへのハード コーディング パスが問題を引き起こす可能性と同様に、レジストリへのハード コーディング パスも問題を引き起こす可能性があります。 代わりに、レジストリ拡張文字列 (REG_EXPAND_SZ) を使用して、該当する場合はパスの独立を提供する必要があります。 たとえば、このメソッドを使用する代わりに、次のようになります。
HKEY_CLASSES_ROOT
MyVendor.MyProgram.1
DefaultIcon
(Default) = C:\WINNT\hta.exe,1
次のメソッドを使用する必要があります。
HKEY_CLASSES_ROOT
MyVendor.MyProgram.1
DefaultIcon
(Default) = "%SYSTEMROOT%\hta.exe,1"
展開する文字列を引用符で常に折り返す
展開する文字列には、展開時にスペースを含めることができます。 スペースは引数の区切り記号として解釈されることが多いため、特定の状況で問題が発生します。 たとえば、MyProgram を呼び出すコマンドは、次のようにレジストリに格納できます。
%SYSTEMROOT%\MyProgram %1 %2
MyProgram では、%1 がファイル名への完全なパスであり、%2 が何らかのアクションを示すスイッチであることを想定しています。 引数 C:\Program Files\My Documents\document.txt と /print を指定してこのコマンドを実行し、SYSTEMROOT が C:\WINNT であると仮定すると、次のように展開されます。
C:\WINNT\MyProgram C:\Program Files\My Documents\document.txt /print
この場合、MyProgram は最初の引数が C:\Program であり、2 番目の引数が Files\My であると解釈します。これは意図した動作ではありません。 ただし、展開文字列が次のように引用符で囲まれている場合、引数にスペースが含まれているかどうかに関係なく、引数は正しく解釈されます。
"%SYSTEMROOT%\MyProgram" "%1" "%2"
自動再生/自動実行とファイルの関連付けを混同しない
ファイルの関連付けは、いくつかの点で自動再生/自動実行に似ています。 ただし、Autoplay/Autorun には、ファイルの関連付けによって提供される機能とは別の機能が用意されています。 詳細については、「 自動実行が有効な CD-ROM アプリケーションの作成」を参照してください。
インターネットエクスプローラー MIMEデータベースをファイルの関連付けと混同しないでください
ファイルの関連付けは、Windows Internet エクスプローラー MIME データベースに似ていますが、そのファイルの種類には MIME の種類の定義を含めることができます (必要があります)。 ただし、インターネット エクスプローラー MIME データベースはファイルの関連付けとは異なります。
適切な形式とバージョン管理された ProgID を使用する
ProgID のバージョンが 1 つしかない場合でも、常にバージョン管理された ProgID を使用します。 バージョン管理された ProgID は、ProgID の競合と上書きを回避するのに役立ちます。 また、異なるバージョンのアプリケーションを共存させることもできます。
短いファイル名拡張子を使用しない
長いファイル名拡張子には、次の利点があります。
- 短い拡張機能の長さが限られているため、 拡張機能の競合が発生しやすくなります。 同じ拡張子を使用して複数のファイルの種類を分類すると、拡張子の競合が発生します。 長い拡張機能を使用すると、衝突の可能性が大幅に低下します。
- 短いファイル名はややわかりにくい傾向があります。 拡張機能に追加情報を埋め込むことができるため、長い拡張機能の方が意味を持つ傾向があります。
詳細については、「 ファイル名拡張子」を参照してください。
IANA MIME データベースに新しいファイルの種類を登録する
インターネット割り当て番号機関 (IANA) は、登録された MIME の種類のパブリック データベースを保持します。 新しいパブリック ファイルの種類を定義する場合は、ファイルの種類の MIME の種類も定義し、この種類を IANA に登録することをお勧めします。 登録費用は発生しません。
ファイルの関連付けのために Windows Web サービスにサインアップする
アプリケーション開発者は、ユーザーが特定のファイルの種類で動作できるアプリケーションを見つけるために使用する Windows Web サービスにサインアップできます。 Web サービスにサインアップするプロセスの詳細については、「Windows ファイル関連付けシステムのオンボーディング プロセス (KB 929149)」を参照してください。
関連トピック