関連付け配列

関連付け配列は、項目の種類に関する情報を格納するために使用されるレジストリの場所の順序付きリストです。これには、ハンドラー、動詞、型のアイコンや表示名などのその他の属性が含まれます。 シェルでは、関連付け配列を使用して、シェル項目に関する情報を含む可能性がある定義済みのレジストリの場所のセットに対してクエリを実行します。

このトピックは次のように整理されています。

アソシエーション配列について

関連付け配列は、ハンドラー、動詞、その他の属性 (型のアイコンや表示名など) を含む、項目の種類に関する情報を含むレジストリの場所の順序付きリストです。 アイテムの種類に関するこの情報は、さまざまなレベルの特異性で登録できます。 たとえば、特定のファイルの種類 (.jpgなど) に対してのみ表示される動詞、または同じ System.Kind (System.kind = picture など) を持つすべてのアイテム、またはすべてのアイテムに対してのみ表示される動詞を登録できます。

シェルでは、関連付け配列を使用して、アイテムに関する情報を含む可能性があるレジストリの場所の定義済みのセットに対してクエリを実行します。 関連付け配列 API を使用して、要求された情報を含む単一の値をレジストリ サブキーから取得し、その値を提供する配列の最初のエントリから取得できます。 たとえば、既定のアイコン値はこのようにして取得されます。 関連付け配列を使用して、レジストリ サブキーに格納されている値のセットを取得することもできます。 たとえば、動詞の一覧は、すべてのサブキーの下に登録されている動詞から作成されます。

シェルは、シェル項目に関する情報について、定義済みの一連のレジストリの場所を照会した後、最も特定の場所から最も一般的なものまで、レジストリの場所を配列に格納します。

関連付け配列は順序付けされたリストであるため、アプリケーション開発者は、特定の種類の項目に対して返される情報をレジストリに追加するためのメカニズムを提供します。 同様に、関連付け配列を使用すると、アプリケーション開発者は、項目がより一般的な場所に登録されるときに、特定の項目グループの情報をレジストリに追加できます。 このロジックは、シェル項目に関する情報を格納するために、レジストリ内の最も適切な場所に関する決定を通知します。

既定の Windows システムでは、.jpg ファイルには次の関連付け配列があります。

  • \ HKEY_CLASSES_ROOTjpgfile
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.jpg
  • \ HKEY_CLASSES_ROOTイメージ
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects

関連付け配列の登録については、「 アプリケーションの登録」を参照してください。

関連付け配列のクエリ

特定のレジストリ サブキーから、すべてのレジストリ サブキーの情報のスーパーセットまで、さまざまなレジストリ サブキーから情報を取得するためのシェル API があります。

アソシエーション配列の最も一般的な用途は、要求された情報を持つ配列内の最も具体的な要素からシェルが返す単一の値を照会することです。 次のコード例は、その方法を示しています。

IQueryAssociations *pqa;

// pShellItem is assumed to be an existing IShellItem object.
hr = pShellItem->BindToHandler(NULL, BHID_AssociationArray, IID_PPV_ARGS(&pqa));
if (SUCCEEDED(hr))
{
    wchar_t szValue[256];
    DWORD cbValue = sizeof(szValue);      // Count of bytes in the array

    hr = pqa->GetData(0, ASSOCDATA_VALUE, L"InfoTip", szValue, &cbValue);
    if (SUCCEEDED(hr))
    {
        // The "InfoTip" value is used to compute the infotip string from
        // properties of an item.
    }
    pqa->Release();
}

次の API を使用して、関連付け配列のクエリを実行したり、クエリを実行できる関連付け配列 IQueryAssociations オブジェクトを構築したりできます。

特定のシェル データ ソースの関連付け配列の操作

各シェル データ ソースは、その項目の関連付け配列を定義します。 通常、関連付け配列の定義は、項目の型の関数です。 シェル データ ソースの実装者は、関連付け配列を定義して文書化して、アプリケーションが動詞やその他の情報の登録など、これらの型の動作を拡張できるようにする必要があります。 アプリケーションでは、関連付け配列サブキーへのデータの追加 (項目の動詞の追加など) に基づいて項目の動作を拡張できます。

ファイル システム データ ソースは、次のレジストリ サブキーと特殊な ProgID に基づいて、ファイルの関連付け配列を構築します。

  • ファイルに ProgID が登録されている場合は、ProgIDHKEY_CLASSES_ROOT\使用されます。 それ以外の場合 HKEY_CLASSES_ROOT\Unknown が使用されます。

  • ファイル名拡張子は、HKEY_CLASSES_ROOT\SystemFileAssociations.fileExtension\ サブキーに登録されます。

  • 次の表に、特殊な ProgID を示します。

    特殊な progID 説明
    HKEY_CLASSES_ROOT\* すべてのファイル (フォルダー以外)
    \ HKEY_CLASSES_ROOTAllFilesystemObjects ファイルとファイル システム のフォルダー
    \ HKEY_CLASSES_ROOTディレクトリ ファイル システム フォルダー
    \ HKEY_CLASSES_ROOTフォルダー シェル コンテナー

     

シェル データ ソースの関連付け配列

次の一覧は、このトピックで説明する目的で使用できるシェル データ ストアの関連付け配列の一部を表しています。

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects
  • \ HKEY_CLASSES_ROOTKind.Document
  • \ HKEY_CLASSES_ROOT結果
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.docx
  • \ HKEY_CLASSES_ROOTWord。Document.12

DBFolder (検索結果とクエリベースのビューの項目を表すシェル データ ストア) に使用できるシェル データ ソースの関連付け配列は次のとおりです。

  • ドライブ
  • ネットワーク
  • RegItems
  • 例 :
    • ContentView
    • 動詞

その他の一般的な関連付け配列には、フォルダーとプリンターが含まれます。

その他のリソース

アプリケーションの登録

ファイルの種類

ファイルの関連付けのしくみ

ファイルの種類または種類別のコンテンツ ビュー

ファイルの種類の検証ツール

ファイルの種類のハンドラー

プログラム識別子

認識される型