Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Shell'in kullanılabilmesi için bir Shell uzantısı işleyici nesnesinin kaydedilmesi gereklidir. Bu konu, kabuk uzantısı işleyicisinin nasıl kaydedileceğine dair bir tartışmadır.
Kabuk uzantısı işleyicisini her oluşturduğunuzda veya değiştirdiğinizde, değişiklik yaptığınız konusunda sisteme bildirimde bulunmanız önemlidir. SHChangeNotifyçağırarak, SHCNE_ASSOCCHANGED olayını belirterek bunu yapın. SHChangeNotifyçağrısı yapmazsanız, sistem yeniden başlatılana kadar değişiklik tanınmayabilir.
Windows 2000 sistemleri için geçerli olan bazı ek faktörler vardır. Ayrıntılar için Windows 2000 Sistemlerinde Kabuk Uzantısı İşleyicilerini Kaydetme bölümüne bakın.
Tüm Bileşen Nesne Modeli (COM) nesnelerde olduğu gibi, windows yazılım geliştirme seti (SDK) ile sağlanan Guidgen.exegibi bir araç kullanarak işleyici için bir GUID oluşturmanız gerekir. HKEY_CLASSES_ROOT\CLSID altında, adı bu GUID'nin dize biçimi olan bir alt anahtar oluşturun. Kabuk uzantısı işleyicileri işlem içi sunucular olduğundan, bu GUID alt anahtarı altında bir InprocServer32 alt anahtarı oluşturmanız ve (Varsayılan) değerinin işleyicinin DLL'sinin yoluna ayarlanması gerekir. Apartman iş parçacığı modelini kullanın. Burada bir örnek gösterilmiştir:
HKEY_CLASSES_ROOT
CLSID
{00021500-0000-0000-C000-000000000046}
InprocServer32
(Default) = %windir%\System32\Example.dll
ThreadingModel = Apartment
Shell, Kabuk uzantısı işleyicisi içerebilecek bir eylem gerçekleştirdiğinde, her zaman uygun kayıt defteri alt anahtarını denetler. Bir uzantı işleyicisinin kayıtlı olduğu alt anahtar, ne zaman çağrılacağını denetler. Örneğin, Kabuk, birdosya türü üyesi için bir kısayol menüsü görüntülediğinde, bir kısayol menüsü işleyicisinin kullanılması yaygın bir uygulamadır. Bu durumda, işleyicinin dosya türünün ProgID alt anahtarı altında kaydedilmesi gerekir.
Bu konuda aşağıdaki konular ele alınmaktadır:
- İşleyici Adları
- Önceden Tanımlanmış Kabuk Nesneleri
- Uzantı İşleyicisi Kayıt Örneği
- İlgili konular
İşleyici Adları
Kabuk uzantısı işleyicisini etkinleştirmek için, ProgID (dosya türleri için) veya Shell nesne türü adının (önceden tanımlanmış kabuk nesneleriiçin) altına, işleyici alt anahtarı adıyla (aşağıya bakın) bir alt anahtar oluşturun. Bu alt anahtarı ShellEx alt anahtarı altında oluşturmaya dikkat edin.
Örneğin, MyProgram.1 için bir kısayol menüsü uzantısı işleyicisi kaydetmek istiyorsanız, aşağıdaki alt anahtarı oluşturarak başlarsınız:
HKEY_CLASSES_ROOT
MyProgram.1
ShellEx
ContextMenuHandlers
Aşağıdaki işleyiciler için, Shell uzantısının sınıf tanımlayıcısının (CLSID) dize sürümü olarak adlandırılan "İşleyici Alt Anahtarı adı" alt anahtarının altında bir alt anahtar oluşturun. Birden çok alt anahtar oluşturularak işleyici alt anahtarı adı altında birden çok uzantı kaydedilebilir.
| İşlemci | Arayüz | İşleyici Alt Anahtarı Adı |
|---|---|---|
| Sütun sağlayıcısı işleyicisi | IColumnProvider | ColumnHandlers |
| Kısayol menüsü işleyicisi | IContextMenu | Bağlam Menüsü İşleyicileri |
| Copyhook işleyicisi | ICopyHook | CopyHookHandlers |
| Sürükle ve bırak işleyicisi | IContextMenu | DragDropHandlers |
| Özellik sayfası işleyicisi | IShellPropSheetExt | ÖzellikSayfasıYöneticileri |
Aşağıdaki işleyiciler için, "İşleyici Alt Anahtarı Adı" anahtarının varsayılan değeri, Kabuk uzantısının CLSID'sinin dize sürümüdür. Bu işleyiciler için yalnızca bir uzantı kaydedilebilir.
| İşlemci | Arayüz | İşleyici Alt Anahtarı Adı |
|---|---|---|
| Veri işleyicisi | IDataObject | DataHandler |
| Bırakma işleyicisi | IDropTarget | DropHandler |
| Simge işleyicisi | IExtractIconA/W | IconHandler |
| Küçük resim görüntü işleyicisi | IThumbnailProvider | {E357FCCD-A995-4576-B01F-234630154E96} |
| Bilgi ipucu işleyicisi | IQueryInfo | {00021500-0000-0000-C000-000000000046} |
| Kabuk bağlantısı (ANSI) | IShellLinkA | {000214EE-0000-0000-C000-000000000046} |
| Kabuk bağlantısı (UNICODE) | IShellLinkW | {000214F9-0000-0000-C000-000000000046} |
| Yapılandırılmış depolama | IStorage | {0000000B-0000-0000-C000-000000000046} |
| Meta veriler | IPropertySetDepolama | Özellik İşleyici |
| Başlat Menüsüne Sabitle | IStartMenuPinnedList | {a2a9545d-a0c2-42b4-9708-a0b2badd77c8} |
| Görev Çubuğuna Sabitle | {90AA3A4E-1CBA-4233-B8BB-535773D48449} |
Bir öğenin kısayol menüsüne Başlat Menüsüne Sabitle ve Görev Çubuğuna Sabitle eklemek için belirtilen alt anahtarlar, yalnızca IsShortCut girdisini içeren dosya türleri için gereklidir.
Önceden Tanımlanmış Kabuk Nesneleri
Kabuk, HKEY_CLASSES_ROOT altında dosya türleriyle aynı şekilde genişletilebilen ek nesneler tanımlar. Örneğin, tüm dosyalar için özellik sayfası işleyicisi eklemek için PropertySheetHandlers alt anahtarına kaydolabilirsiniz.
HKEY_CLASSES_ROOT
*
shellex
PropertySheetHandlers
Aşağıdaki tablo, uzantı işleyicilerinin kaydedilebileceği çeşitli HKEY_CLASSES_ROOT alt anahtarlarını verir. Listelenen alt anahtarların tümü altında birçok uzantı işleyicisinin kaydedilemeyeceğini unutmayın. Diğer ayrıntılar için belirli işleyicinin belgelerine bakın.
| Alt anahtar | Açıklama | Olası İşleyiciler |
|---|---|---|
| * | Tüm dosyalar | Kısayol Menüsü, Özellik Sayfası, Fiiller (aşağıya bakın) |
| TümDosyaSistemiNesneleri | Tüm dosyalar ve dosya klasörleri | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Klasör | Tüm klasörler | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Dizin | Dosya klasörleri | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Directory\Background | Dosya klasörü arka planı | Yalnızca Kısayol Menüsü |
| Masaüstü Arka Planı | Masaüstü arka planı (Windows 7 ve üzeri) | Kısayol Menüsü, Fiiller |
| Sürücü | Bilgisayarım'daki "C:\" gibi tüm sürücüler | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Ağ | Tüm ağ (Ağ Yerlerim altında) | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Network\Type\# | # türüne ait tüm nesneler (aşağıya bakın) | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| NetShare | Tüm ağ paylaşımları | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| NetServer | Tüm ağ sunucuları | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| network_provider_name | "network_provider_name" ağ sağlayıcısı tarafından sağlanan tüm nesneler | Kısayol Menüsü, Özellik Sayfası, Fiiller |
| Yazıcılar | Tüm yazıcılar | Kısayol Menüsü, Özellik Sayfası |
| AudioCD | CD sürücüsünde Ses CD'si | Yalnızca fiiller |
| DVD | DVD sürücüsü (Windows 2000) | Kısayol Menüsü, Özellik Sayfası, Fiiller |
Notlar
- Dosya klasörü arka plan kısayol menüsüne, bir dosya klasörünün içinde sağ tıklayarak erişilir, ancak klasörün içeriklerinden herhangi birinin üzerine erişemezsiniz.
- "Fiiller", HKEY_CLASSES_ROOT\Alt Anahtar\Kabuk\Fiilaltında kaydedilen özel komutlardır.
- Ağ\Türü\#için , "#" ondalık olarak bir ağ sağlayıcısı türü kodudur. Ağ sağlayıcısı türü kodu, bir ağ türünün yüksek sözcüğüdür. Ağ türlerinin listesi Winnetwk.h üst bilgi dosyasında (WNNC_NET_* değerler) verilir. Örneğin, WNNC_NET_SHIVA 0x00330000 olduğundan ilgili tür alt anahtarı HKEY_CLASSES_ROOT\Ağ\Türü\51olacaktır.
- "network_provider_name", WNetGetProviderNametarafından belirtilen bir ağ sağlayıcısı adıdır ve boşluklar alt çizgiye dönüştürülür. Örneğin, Microsoft Ağ ağ sağlayıcısı yüklüyse, sağlayıcı adı "Microsoft Windows Network" ve karşılık gelen network_provider_nameMicrosoft_Windows_Networkolur.
Uzantı İşleyicisinin Kayıt Örneği
Belirli bir işleyiciyi etkinleştirmek için, uzantı işleyici türü alt anahtarı altında işleyicinin adıyla bir alt anahtar oluşturun. Shell işleyicinin adını kullanmaz, ancak bu tür alt anahtar altındaki diğer tüm adlardan farklı olmalıdır. Ad alt anahtarının varsayılan değerini işleyicinin GUID'sinin dize biçimine ayarlayın.
Aşağıdaki örnekte, örnek bir .myp dosya türü kullanılarak kısayol menüsü ve özellik sayfası uzantısı işleyicilerini etkinleştiren kayıt defteri girdileri gösterilmektedir.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
CLSID
{00000000-1111-2222-3333-444444444444}
InProcServer32
(Default) = C:\MyDir\MyCommand.dll
ThreadingModel = Apartment
{11111111-2222-3333-4444-555555555555}
InProcServer32
(Default) = C:\MyDir\MyPropSheet.dll
ThreadingModel = Apartment
MyProgram.1
(Default) = MyProgram Application
Shellex
ContextMenuHandler
MyCommand
(Default) = {00000000-1111-2222-3333-444444444444}
PropertySheetHandlers
MyPropSheet
(Default) = {11111111-2222-3333-4444-555555555555}
İlgili konular