Aracılığıyla paylaş


İlişkilendirme Dizileri

İlişkilendirme dizisi, işleyiciler, fiiller ve türün simgesi ve görünen adı gibi diğer öznitelikler de dahil olmak üzere bir öğe türüyle ilgili bilgileri depolamak için kullanılan kayıt defteri konumlarının sıralı bir listesidir. Kabuk, kabuk öğesi hakkında bilgi içerebilecek önceden tanımlanmış bir kayıt defteri konumları kümesini sorgulamak için ilişkilendirme dizilerini kullanır.

Bu konu aşağıdaki gibi düzenlenmiştir:

İlişkilendirme Dizileri Hakkında

İlişkilendirme dizisi, işleyiciler, fiiller ve türün simgesi ve görünen adı gibi diğer öznitelikler de dahil olmak üzere bir öğe türü hakkında bilgi içeren sıralı bir kayıt defteri konumları listesidir. Öğe türüyle ilgili bu bilgiler, farklı özgüllük düzeylerinde kaydedilebilir. Örneğin, yalnızca belirli bir dosya türü (.jpggibi) veya aynı System.Kind 'e (örneğin, System.kind = resim) sahip tüm öğeler için veya tüm öğeler için gösterilecek bir fiil kaydedebilirsiniz.

Kabuk, öğe hakkında bilgi içerebilecek önceden tanımlanmış bir kayıt defteri konumları kümesini sorgulamak için ilişkilendirme dizilerini kullanır. İlişki dizisi API'leri, kayıt defteri alt anahtarından istenen bilgileri içeren tek bir değer almak için kullanılabilir ve bu değer bunu sağlayan dizideki ilk girdiden gelir. Örneğin, varsayılan simge değeri bu şekilde alınır. İlişkilendirme dizisi, kayıt defteri alt anahtarlarında depolanan bir değer kümesini almak için de kullanılabilir. Örneğin, fiil listesi tüm alt anahtarlar altında kayıtlı olan fiillerden oluşturulur.

Shell, bir Shell öğesi hakkında bilgi için önceden tanımlanmış bir kayıt defteri konumları kümesini sorguladıktan sonra, kayıt defteri konumlarını en belirli konumdan en genele doğru bir diziye yerleştirir.

İlişki dizileri sıralı listeler olduğundan, uygulama geliştiricilerine belirli bir öğe türü için döndürülecek bilgileri kayıt defterine ekleme mekanizması sağlar. Benzer şekilde, ilişkilendirme dizileri uygulama geliştiricilerinin söz konusu öğeler daha genel bir konuma kaydedildiğinde belirli bir öğe grubu için kayıt defterine bilgi eklemesine izin verir. Bu mantık, Kabuk öğeleri hakkındaki bilgileri depolamak için kayıt defterindeki en uygun konum hakkındaki kararınızı bildirir.

Varsayılan bir Windows sisteminde bir .jpg dosyası aşağıdaki ilişkilendirme dizisine sahiptir:

  • HKEY_CLASSES_ROOT\jpgfile
  • SystemFileAssociations\.jpgHKEY_CLASSES_ROOT\
  • HKEY_CLASSES_ROOT\resim
  • HKEY_CLASSES_ROOT\*
  • AllFilesystemObjectsHKEY_CLASSES_ROOT\

İlişki dizilerini kaydetme hakkında bilgi için bkz. uygulama kaydı .

İlişkilendirme Dizilerini Sorgulama

En özel kayıt defteri alt anahtarından tüm kayıt defteri alt anahtarlarında bilgilerin üst kümesine kadar bir dizi kayıt defteri alt anahtarından bilgi almak için Kabuk API'leri vardır.

İlişkilendirme dizisinin en yaygın kullanımı, Shell'in istenen bilgileri içeren dizideki en belirli öğeden döndürdüğü tek bir değeri sorgulamaktır. Aşağıdaki kod örneği bunun nasıl yapılacağını gösterir.

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();
}

Aşağıdaki API'ler, bir ilişkilendirme dizisini sorgulamak veya sorgulanabilen IQueryAssociationsnesnesibir ilişkilendirme dizisi oluşturmak için kullanılabilir:

Belirli Bir Kabuk Veri Kaynağı için İlişkilendirme Dizileriyle Çalışma

Her Kabuk veri kaynağı, öğeleri için ilişkilendirme dizisini tanımlar. İlişkilendirme dizisi tanımlamak genellikle öğe türünün bir işlevidir. Kabuk veri kaynağı uygulayıcıları, uygulamaların fiilleri veya diğer bilgileri kaydetme gibi bu türlerin davranışını genişletmesini sağlamak için ilişkilendirme dizilerini tanımlamalı ve belgelemelidir. Uygulamalar, öğeler için fiil ekleme gibi ilişkilendirme dizisi alt anahtarlarına veri eklemeye dayalı olarak öğelerin davranışını genişletebilir.

Dosya sistemi veri kaynağı, aşağıdaki kayıt defteri alt anahtarlarını ve özel ProgID'leri temel alan dosyalar için bir ilişkilendirme dizisi oluşturur:

  • Dosya kayıtlı bir ProgID'ye sahipse HKEY_CLASSES_ROOT\ProgID kullanılır. Aksi takdirde HKEY_CLASSES_ROOT\Bilinmeyen kullanılır.

  • Dosya adı uzantısı HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension alt anahtarına kaydedilir.

  • Özel ProgID'ler aşağıdaki tabloda gösterilmiştir.

    Özel progID Açıklama
    HKEY_CLASSES_ROOT\* Tüm dosyalar (klasör olmayan)
    AllFilesystemObjectsHKEY_CLASSES_ROOT\ Dosyalar ve dosya sistemi klasörleri
    HKEY_CLASSES_ROOT\Dizin Dosya sistemi klasörleri
    HKEY_CLASSES_ROOT\Klasör Kabuk kapsayıcıları

     

Kabuk Veri Kaynağı İlişkilendirme Dizileri

Aşağıdaki liste, bu konuda açıklanan amaçlar için kullanılabilecek Shell veri deposu ilişkilendirme dizilerinden bazılarını temsil eder:

  • HKEY_CLASSES_ROOT\*
  • AllFilesystemObjectsHKEY_CLASSES_ROOT\
  • HKEY_CLASSES_ROOT\Kind.Document
  • HKEY_CLASSES_ROOT\Sonuçları
  • SystemFileAssociations\.docxHKEY_CLASSES_ROOT\
  • word.document.12HKEY_CLASSES_ROOT\

DBFolder için kullanılabilecek kabuk veri kaynağı ilişkilendirme dizileri (arama sonuçları ve sorgu tabanlı görünümlerdeki öğeleri temsil eden bir Kabuk veri deposu) aşağıdaki gibidir:

  • Sürücü
  • RegItems
  • Örnekler:
    • ContentView
    • Fiil

Diğer yaygın ilişkilendirme dizileri Klasör ve Yazıcılar'dır.

Ek Kaynaklar

uygulama kaydı

Dosya Türleri

Dosya İlişkilendirmeleri nasıl çalışır

Dosya Türüne veya Türe Göre İçerik Görünümünü

Dosya Türü Doğrulayıcı

Dosya Türü İşleyicileri

Programlama Tanımlayıcıları

algılanan türleri