Dela via


Registrera sammansättningar med COM

Du kan köra ett kommandoradsverktyg med namnet Assembly Registration Tool (Regasm.exe) för att registrera eller avregistrera en sammansättning för användning med COM. Regasm.exe lägger till information om klassen i systemregistret så att COM-klienter kan använda .NET Framework-klassen transparent. Klassen RegistrationServices tillhandahåller motsvarande funktioner.

En hanterad komponent måste registreras i Windows-registret innan den kan aktiveras från en COM-klient. I följande tabell visas de nycklar som Regasm.exe vanligtvis lägger till i Windows-registret. (000000 anger det faktiska GUID-värdet.)

GUID beskrivning Registernyckel
CLSID Klassidentifierare HKEY_CLASSES_ROOT\CLSID\{000... 000}
IID Gränssnittsidentifierare HKEY_CLASSES_ROOT\Interface\{000... 000}
LIBID Biblioteksidentifierare HKEY_CLASSES_ROOT\TypeLib\{000... 000}
Progid Programmatisk identifierare HKEY_CLASSES_ROOT\000... 000

Under the HKCR\CLSID\{0000... 0000}-nyckel, standardvärdet är inställt på klassens ProgID och två nya namngivna värden, klass och sammansättning, läggs till. Körningen läser sammansättningsvärdet från registret och skickar det vidare till runtime-sammansättningslösaren. Sammansättningsmatcharen försöker hitta sammansättningen baserat på sammansättningsinformation som namn och versionsnummer. För att sammansättningslösaren ska kunna hitta en sammansättning måste sammansättningen finnas på någon av följande platser:

  • Den globala sammansättningscache (måste vara en stark namngiven sammansättning).

  • I programkatalogen. Sammansättningar som läses in från programsökvägen är endast tillgängliga från programmet.

  • Längs en filsökväg som anges med alternativet /codebase för att Regasm.exe.

Regasm.exe skapar också InProcServer32-nyckeln under HKCR\CLSID\{0000... 0000} nyckel. Standardvärdet för nyckeln är inställt på namnet på den DLL som initierar den gemensamma språkkörningen (Mscoree.dll).

Undersöka registerposter

COM-interop tillhandahåller en fabriksimplementering av standardklassen för att skapa en instans av en .NET Framework-klass. Klienter kan anropa DllGetClassObject på den hanterade DLL:en för att hämta en klassfabrik och skapa objekt, precis som med andra COM-komponenter.

För undernyckeln InprocServer32 visas en referens till Mscoree.dll i stället för ett traditionellt COM-typbibliotek för att indikera att den vanliga språkkörningen skapar det hanterade objektet.

Se även