COM Registrierung

2 views
Skip to first unread message

Björn Rochel

unread,
Apr 23, 2009, 5:25:06 AM4/23/09
to altnetde
Hi Zusammen,

ich brauche mal ne Hilfe von den COM-Experten unter Euch. Bei nem
Kunden habe ich kürzlich die Anforderung bekommen mehrere Versionen
einer COM-Komponente parallel auf dem gleichen OS (Vista) hosten zu
müssen.

Ich muss gestehen, dass ich überhaupt kein COM - Experte bin. Deshalb
würde ich mich über jedes Feedback freuen. Also, wie würdet Ihr das
angehen?

Ich meine irgendwo mal gelesen zu haben, dass es ab XP eine neue Art
der COM Registierung gibt, bzw. mehrere Versionen einer COM-Komponente
OHNE Windows Registry parallel betreibbar sind. Kann das jemand von
Euch bestätigen? Und wenn ja, wäre es super wenn Ihr mich auf mehr
Informationen wie das gehen kann verweisen könnt.

Wie Ihr seht, Fragen über Fragen. :-)

Danke für alle Antworten im voraus und viele Grüße
Björn

Erich Eichinger

unread,
Apr 23, 2009, 6:54:04 AM4/23/09
to altn...@googlegroups.com
hier lang verdrängtes Material aus meinem Gedächtnis:

> , dass es ab XP eine neue Art der COM Registierung gibt
das einzige, was mir hierzu einfällt, ist das .NET Feature "Registration
Free COM Components". Hier ein Blog, der das ganz brauchbar beschreibt:
http://blogs.msdn.com/junfeng/archive/2006/05/17/registration-free-com-net-i
nterop.aspx (siehe auch Link "my last article" ganz oben!)


Ansonsten erfolgt das Versionieren von COM Komponenten, indem für jede
Version eine neue CLSID (=Class ID) vergeben wird. Das entspricht in .NET
einer "class". Einer CLSID wird üblicherweise auch eine ProgID vergeben, die
verwendet wird um eine COM Komponente zu instanziieren. So eine ProgID ist
lediglich ein Alias für eine CLSID. Eine typische Komponentenregistrierung
sieht etwa wie folgt aus:

HKCR\CLSID
<class guid 1>
InprocHandler32 = <dll pfad>
ProgID = "My.Comp.1"
VersionIndependentProgID = "My.Comp"

HKCR\My.Comp.1
CLSID = <class guid 1>

HKCR\My.Comp
CLSID = <class guid 1>
CurVer = My.Comp.1


Für die Schnittstellen erfolgt die Versionierung, indem für jede
Schnittstelle prinzipiell eine eigene GUID vergeben wird.

Grundsätzlich gilt: Sobald eine Komponente und ihre Schnittstellen
veröffentlicht sind und anschliessend Änderungen gemacht werden müssen ->
mind. neue Schnittstelle + neue Guid, ev. neue CLSID! COM folgt hier sehr
streng dem OCP ;-)

hth,
Erich

Björn Rochel

unread,
Apr 23, 2009, 8:00:20 AM4/23/09
to altn...@googlegroups.com
Hallo Erich,

>>das einzige, was mir hierzu einfällt, ist das .NET Feature "Registration
Free COM Components". Hier ein Blog, der das ganz brauchbar beschreibt:
>>http://blogs.msdn.com/junfeng/archive/2006/05/17/registration-free-com-net
-i
>>nterop.aspx

super genau das meinte ich. Das werde ich mal ausprobieren. Danke Dir für
den Link.

VG
Björn

-----Ursprüngliche Nachricht-----
Von: altn...@googlegroups.com [mailto:altn...@googlegroups.com] Im Auftrag
von Erich Eichinger
Gesendet: Donnerstag, 23. April 2009 12:54
An: altn...@googlegroups.com
Betreff: [altnetde] Re: COM Registrierung

Laurin Stoll

unread,
Jun 16, 2009, 4:50:12 AM6/16/09
to altnetde
Hallo Björn,

Wollte mal nachfragen, da bei mir das noch nie funktioniert hat, ob du
das mit den Isolated COM-Komponenten hingekriegt hast?

lg

On 23 Apr., 14:00, "Björn Rochel" <bjoern.roc...@googlemail.com>
wrote:
> Hallo Erich,
>
> >>das einzige, was mir hierzu einfällt, ist das .NET Feature "Registration
>
> Free COM Components". Hier ein Blog, der das ganz brauchbar beschreibt:
>
> >>http://blogs.msdn.com/junfeng/archive/2006/05/17/registration-free-co...
> -i
> >>nterop.aspx
>
> super genau das meinte ich. Das werde ich mal ausprobieren. Danke Dir für
> den Link.
>
> VG
> Björn
>
> -----Ursprüngliche Nachricht-----
> Von: altn...@googlegroups.com [mailto:altn...@googlegroups.com] Im Auftrag
> von Erich Eichinger
> Gesendet: Donnerstag, 23. April 2009 12:54
> An: altn...@googlegroups.com
> Betreff: [altnetde] Re: COM Registrierung
>
> hier lang verdrängtes Material aus meinem Gedächtnis:
>
> > , dass es ab XP eine neue Art der COM Registierung gibt
>
> das einzige, was mir hierzu einfällt, ist das .NET Feature "Registration
> Free COM Components". Hier ein Blog, der das ganz brauchbar beschreibt:http://blogs.msdn.com/junfeng/archive/2006/05/17/registration-free-co...
> Björn- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Björn Rochel

unread,
Jun 19, 2009, 12:49:20 PM6/19/09
to altnetde
Hi Laurin,

sorry erstmal, hab schon länger nicht mehr reingeschaut. Ich kann Dir
leider Deine Frage nicht beantworten, da das ganze auf grund
geänderter Anforderungen dann doch nicht benötigt wurde. Komisch ist
die Welt ;-)

VG
Björn

Laurin Stoll

unread,
Jun 29, 2009, 12:41:20 PM6/29/09
to altnetde
Schade - aber besten Dank für deine Info :-)
> > > - Zitierten Text anzeigen -- Zitierten Text ausblenden -
Reply all
Reply to author
Forward
0 new messages