que estaba buscando en el acceso al registro de vsjitdebugger.exe
usando Process Monitor, y me di cuenta de que veces se consulta el registro de la siguiente manera (algo de información omitido):¿Cómo (y cuándo) funciona 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
Información sobre TreatAs on MSDN muestra que permite especificar un GUID para otro servidor COM que se llamará en lugar del original.
No pude encontrar mucha más información acerca de esta clave, y no pude usarla en mi propio objeto COM: tengo dos implementaciones diferentes del mismo objeto COM (en 2 DLL separadas, teniendo 2 GUID separados), y cuando mi proceso crea el objeto a través de GUID, me gustaría crear el otro objeto en su lugar (a través del GUID especificado en TreatAs). Desafortunadamente, parece que Windows intenta inmediatamente consultar HKCU\Software\Classes\CLSID\{my-guid}\InprocServer32
, en lugar de buscar primero TreatAs.
Mi pregunta básicamente es acerca de las reglas de TreatAs, cuándo y cómo se consultan?
A pesar de que le pregunté esto hace casi 3 años, agradezco la respuesta :) –
Me di cuenta por casualidad de la pregunta. Yo uso TreatAs para enganchar instancias DirectShow Filter Graph Manager en mi herramienta [DirectShowSpy] (http://alax.info/blog/777). –