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 (globalt unikt identifierare) 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örningstiden läser Assembly-värdet från registret och skickar det vidare till körningstids assembly-upplösare. 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ättningscachen (måste vara en starkt namngiven sammansättning).

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

  • På en filsökväg som anges med alternativet /codebase till Regasm.exe.

Regasm.exe skapar även InProcServer32-nyckeln under HKCR\CLSID\{0000... 0000} nyckel. Standardvärdet för nyckeln är inställt på namnet på den DLL som initierar common language runtime (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 som anger att den vanliga språkkörningen skapar det hanterade objektet.

Se även