2010-01-15 13 views
14

Quando si registra manualmente una classe gestita per l'interoperabilità COM, sono necessarie alcune chiavi del Registro di sistema. Per esempioLa chiave "Categorie implementate" è necessaria quando si registra una componente COM gestita?

HKEY_CLASSES_ROOT 
    CLSID\[My Cls Id] 
    InprocServer32 
    (Default) = "mscoree.dll" 
    Assembly = [My assembly name] 
    etc. 

Ho notato che quando VS registra una libreria per interoperabilità COM, si aggiunge anche una chiave

HKEY_CLASSES_ROOT 
    CLSID\[My Cls Id] 
    Implemented Categories 
     {62C8FE65-4EBB-45e7-B440-6E39B2CDBF29} 

Qual è la chiave per, ed è assolutamente necessario? Per quanto posso dire, la vita va avanti senza di essa, ma forse non sto incontrando le circostanze in cui è necessario.

risposta

23

È un CATID, una categoria di componenti. Un host di controllo può utilizzarlo per, ad esempio, filtrare gli elementi visualizzati in una toolbox, offrendo solo quelli che implementano un set di interfacce previsto.

È possibile visualizzare un elenco di categorie di componenti noti nella chiave di registro HKCR\Component Categories. Quello che Regasm.exe utilizza significa "questo server COM è implementato in .NET". Il che è abbastanza utile sapere perché un programma .NET non dovrebbe usare un server COM implementato in un linguaggio gestito, dovrebbe usare direttamente i metadati nell'assembly.

I CATID non sono ben documentati. Il che li rende abbastanza inutili, raramente avrai problemi se li ometti semplicemente. Se un fornitore di host di controllo richiede l'uso di un CATID per rendere il server COM utilizzabile nel proprio host, verrà informato in modo esplicito.

+0

Hans - risposta utile grazie. Intendi "un programma .NET non può utilizzare un server COM implementato in una lingua gestita * un *" piuttosto che in "linguaggio gestito"? Maggiori informazioni sui CATID all'indirizzo http://msdn.microsoft.com/en-us/magazine/cc301432.aspx –

+0

@Simon: no, i server COM vengono normalmente implementati in una lingua non gestita. –

Problemi correlati