共用方式為


關聯陣列

關聯陣列是用來儲存項目類型相關信息的已排序登錄位置清單,包括處理程式、動詞命令和其他屬性,例如該類型的圖示和顯示名稱。 Shell 會使用關聯數位來查詢一組預先定義的登錄位置,這些登錄位置可能包含殼層專案的相關信息。

本主題的組織方式如下:

關於關聯數位

關聯陣列是一份已排序的登錄位置清單,其中包含專案類型的相關信息,包括處理程式、動詞命令和其他屬性,例如該類型的圖示和顯示名稱。 有關項目類型的資訊可以在不同層級的特定性上註冊。 例如,您可以註冊一個動詞,該動詞只會針對特定文件類型顯示(例如 .jpg),或針對具有相同 System.Kind 的所有專案(例如 System.kind = picture),或針對所有項目顯示。

Shell 會使用關聯數位來查詢一組預先定義的登錄位置,這些位置可能會包含專案的相關信息。 關聯陣列 API 可用來從登錄子機碼擷取包含所要求資訊的單一值,該值來自提供它之數位中的第一個專案。 例如,以這種方式擷取預設圖示值。 關聯數位也可以用來擷取儲存在登錄子機碼中的一組值。 例如,動詞清單是從所有子機碼下註冊的動詞建立。

在Shell查詢預先定義的登錄位置集以取得殼層專案的相關信息之後,它會將登錄位置放入陣列中,以從最特定位置到最一般的位置。

因為關聯陣列是已排序的清單,所以會為應用程式開發人員提供一個機制,以便將資訊新增至將針對特定類型專案傳回的登錄。 同樣地,關聯數位可讓應用程式開發人員在較一般的位置註冊這些專案時,將資訊新增至特定專案群組的登錄。 此邏輯會通知您關於登錄中最適合位置的決定,以儲存殼層專案的相關信息。

在預設 Windows 系統上,.jpg 檔案具有下列關聯數位:

  • HKEY_CLASSES_ROOT\jpgfile
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg
  • HKEY_CLASSES_ROOT\映像
  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects

如需註冊關聯數位資訊,請參閱 應用程式註冊

查詢關聯數位

殼層 API 可從一系列登錄子機碼擷取資訊,從最特定的登錄子機碼到所有登錄子機碼中資訊的超集。

關聯數位最常見的用法是查詢Shell從陣列中具有要求資訊的最特定元素傳回的單一值。 下列程式代碼範例示範如何執行此動作。

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物件關聯數位:

使用特定 Shell 數據源的關聯數位

每個 Shell 數據源都會為其專案定義關聯數位。 定義關聯數位通常是項目類型的函式。 殼層數據源實作者應該定義並記錄關聯數位,讓應用程式能夠擴充這些類型的行為,例如註冊動詞或其他資訊。 應用程式可以根據將數據新增至關聯數位來擴充項目的行為,例如新增項目的動詞。

檔案系統資料來源會根據下列登錄子機碼和特殊 ProgID 來建置檔案的關聯數位:

  • 如果檔案具有已註冊的 ProgID,則會使用 HKEY_CLASSES_ROOT\ProgID。 否則會使用 HKEY_CLASSES_ROOT\未知

  • 擴展名會在 HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension 子機碼下註冊。

  • 下表顯示特殊 ProgID。

    特殊 progID 描述
    HKEY_CLASSES_ROOT\* 所有檔案 (非資料夾)
    HKEY_CLASSES_ROOT\AllFilesystemObjects 檔案和檔案系統資料夾
    HKEY_CLASSES_ROOT\Directory 檔案系統資料夾
    HKEY_CLASSES_ROOT\資料夾 殼層容器

     

Shell 數據源關聯數位

下列清單代表一些殼層數據存放區關聯陣列,可用於本主題所述的用途:

  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects
  • HKEY_CLASSES_ROOT\Kind.Document
  • HKEY_CLASSES_ROOT\結果
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.docx
  • HKEY_CLASSES_ROOT\Word.Document.12

可用於 DBFolder 的殼層數據源關聯數位(代表搜尋結果和查詢型檢視中專案的 Shell 數據存放區),如下所示:

  • 驅動器
  • 網路
  • RegItems
  • 例子:
    • ContentView
    • 動詞

其他常見的關聯數位包括 Folder 和 Printers。

其他資源

應用程式註冊

檔案類型

檔案關聯的運作方式

依檔類型或種類 內容檢視

檔案類型驗證程式

檔案類型處理程式

程式設計標識碼

感知型別