मैं 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
से पूछताछ करने का प्रयास करता है।
मेरा प्रश्न मूल रूप से ट्रीटए के नियमों के बारे में है, यह कब और कैसे पूछता है?
भले ही मैंने इसे लगभग 3 साल पहले पूछा था, मैं जवाब की सराहना करता हूं :) –
मैंने संयोग से सवाल देखा। मैं अपने [DirectShowSpy] (http://alax.info/blog/777) टूल में डायरेक्टशो फ़िल्टर ग्राफ़ मैनेजर इंस्टेंटेशन को हुक करने के लिए ट्रीटए का उपयोग करता हूं। –