2010-11-23 23 views
5

Ben Process Monitor kullanarak vsjitdebugger.exe kayıt defteri erişimi bakıyordu, ben bazen o aşağıdaki şekilde kayıt (omited bazı bilgi) sorgular fark:COM TreatAs nasıl çalışır (ve ne zaman çalışır?)

HKCU\Software\Classes\CLSID\{some-guid} NAME NOT FOUND Desired Access: Read 
... 
HKCU\Software\Classes\CLSID\{some-guid}\TreatAs NAME NOT FOUND Desired Access: Query Value 
... 
HKCU\Software\Classes\CLSID\{some-guid}\InprocServer32 NAME NOT FOUND Desired Access: Read 
... 
HKCR\CLSID\{24E669E1-E90F-4595-A012-B0FD3CCC5C5A}\InprocServer32 SUCCESS Desired Access: Read 

TreatAs on MSDN ilişkin bilgiler de belirterek izin verdiğini gösterir orijinal yerine çağrılacak başka bir COM sunucusu için GUID.

Bu anahtarla ilgili daha fazla bilgi bulamadım ve kendi COM nesnesinde kullanamadım: Aynı COM nesnesinin iki farklı uygulamasına sahibim (2 ayrı DLL'de) 2 ayrı GUID) ve işlemimin GUID aracılığıyla nesneyi oluşturduğunda, bunun yerine diğer nesneyi (TreatAs'da belirtilen GUID aracılığıyla) oluşturmasını isterim. Ne yazık ki, Windows hemen TreatAs aramak yerine, HKCU\Software\Classes\CLSID\{my-guid}\InprocServer32 sorgulamaya çalışır gibi görünüyor.

Sorumum, temel olarak, ne zaman ve nasıl sorgulanır?

cevap

2

TreatAs özellik oldukça basit çalışır: bulunca bir COM nesnesinin bir örneğini TreatAs için COM alt sistem kontrolleri anahtar ve bir ikame/emülasyon sınıf örneğini ve şeffaf iade yerine istenen girişiminde CoCreateInstance için bir istek ile CLSID. Arayan, böylece, bir öykünme nesnesinin bir arayüzünü saydam bir şekilde elde eder.

Bu özellik nadiren kullanılır, ancak yine de kullanılır. Şu anda etkin TreatAs sınıflarını EnumerateTreatAsClasses yardımcı programını kullanarak numaralandırabilirsiniz. Özellik, COM sınıfı örneğini çekmenin yöntemlerinden biridir.

+0

Neredeyse 3 yıl önce bunu sormuş olsam da, cevabı takdir ediyorum :) –

+0

Ben tesadüfen sorunu farkettim. DirectShow Filter Graph Manager örneklerini [DirectShowSpy] (http://alax.info/blog/777) aracımda kullanmak için TreatA'ları kullanıyorum. –