2010-11-23 7 views
5

मैं Process Monitor का उपयोग कर vsjitdebugger.exe की रजिस्ट्री पहुँच देख रहा था, और मैंने देखा है कि कभी कभी यह निम्नलिखित तरीके से रजिस्ट्री (कुछ जानकारी omited) प्रश्नों:COM TreatAs कैसे काम करता है (और कब)?

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 के बारे में जानकारी से पता चलता है कि यह निर्दिष्ट करने की अनुमति देता है कि एक अन्य COM सर्वर के लिए एक GUID जिसे मूल के बजाय बुलाया जाएगा।

मैं इस कुंजी के बारे में अधिक जानकारी प्राप्त करने में सक्षम नहीं था, और मैं इसे अपने स्वयं के COM ऑब्जेक्ट पर उपयोग करने में सक्षम नहीं था: मेरे पास एक ही COM ऑब्जेक्ट के दो अलग-अलग कार्यान्वयन हैं (2 अलग डीएलएल में, 2 अलग GUIDs), और जब मेरी प्रक्रिया वस्तु को GUID के माध्यम से बनाता है, तो मैं इसे अन्य ऑब्जेक्ट बनाने के लिए चाहूंगा (ConfA में निर्दिष्ट GUID के माध्यम से)। दुर्भाग्यवश, ऐसा लगता है कि विंडोज तुरंत उपचार के लिए देख रहे हैं, बजाय HKCU\Software\Classes\CLSID\{my-guid}\InprocServer32 से पूछताछ करने का प्रयास करता है।

मेरा प्रश्न मूल रूप से ट्रीटए के नियमों के बारे में है, यह कब और कैसे पूछता है?

उत्तर

2

TreatAs सुविधा बहुत सरल काम करता है: CoCreateInstance के लिए एक अनुरोध एक COM वस्तु का एक उदाहरण, TreatAs के लिए COM सबसिस्टम चेकों कुंजी और, जब पाया, एक प्रतिस्थापन/अनुकरण वर्ग का दृष्टांत और पारदर्शी इसे वापस करने के बजाय का अनुरोध करने का प्रयास के साथ CLSID। इस प्रकार, कॉलर पारदर्शी रूप से एक इम्यूलेशन ऑब्जेक्ट का एक इंटरफ़ेस प्राप्त करता है।

सुविधा का शायद ही कभी उपयोग किया जाता है, लेकिन अभी भी उपयोग किया जाता है। आप EnumerateTreatAsClasses उपयोगिता का उपयोग कर वर्तमान में सक्रिय TreatAs कक्षाओं का आकलन कर सकते हैं। सुविधा COM क्लास तत्कालता को हुक करने की विधि में से एक है।

+0

भले ही मैंने इसे लगभग 3 साल पहले पूछा था, मैं जवाब की सराहना करता हूं :) –

+0

मैंने संयोग से सवाल देखा। मैं अपने [DirectShowSpy] (http://alax.info/blog/777) टूल में डायरेक्टशो फ़िल्टर ग्राफ़ मैनेजर इंस्टेंटेशन को हुक करने के लिए ट्रीटए का उपयोग करता हूं। –

संबंधित मुद्दे