Question lien entre une dll et son CLSID

Plus d'informations
il y a 13 ans 6 mois #7929 par michault
Bonjour,

je réapparais après plus d'un an de silence.
Voilà mon problème: J'aimerais à partir du fullName d'une Dll, récupérer son CLSID.

Quelqu'un a-t-il une idée?


Je travail depuis un an sur C# et j'ai souven des problèmes avec des DLL introuvables. Pour être plus clair: je génère un exe et quand je l'éxécute j'ai un message d'une clarté dans le journal d'évènement du style:

System.Runtime.InteropServices.COMException (0x80040154): La récupération de la fabrique de classe COM pour le composant avec le CLSID {86F9DB20-15D5-11D2-849C-0004AC94E175} a échoué en raison de l'erreur suivante : 80040154.

Effectivement je ne trouve pas ce CLSID sous HKClasseRoot\CLSID. je voudrais donc mettre la main sur la Dll fautive.

Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 6 mois #7932 par Laurent Dardenne
chm69 écrit:

je réapparais après plus d'un an de silence.

Le repos du guerrier :lol:
chm69 écrit:

Effectivement je ne trouve pas ce CLSID sous HKClasseRoot\CLSID.

Normal, si regsrv n'est pas exécuté sur la dll cible son CLSID ne peut être référencé.
chm69 écrit:

je voudrais donc mettre la main sur la Dll fautive.

L'est-elle vraiment ?
Il y a une sorte de contrat implicite avec ce type de DLL, si tu ne le respectes pas, elle non plus ne te respecte pas ;)
Le respect c'est mutuel, c'est COM ça!

Je n'ai pas trop le temps de creuser, mais si tu recherches, non pas un fichier, mais un CLSID, qui nécessite un enregistrement dans la base de registre qui n'a pas eu lieu, ce n'est pas possible.
Puisque justement le CLSID (class ID), t'affranchis de son hébergement( la dll). C'est une sorte de pointeur (indirection).
Sinon à la place du CLSID tu aurais un nom de fichier .DLL, là pas d'ambiguité sur le nom de fichier, mais ainsi es-tu assuré qu'elle contienne la dernière version de l'objet ciblé ?
En théorie on peut trés bien avoir + fichiers DLL qui héberge le même CLSID (enfin j'ai doute sur ce point), je ne code pas des objets 'COM' tous les jours.
Va falloir que je relise ma doc :whistle:

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 5 mois #7937 par Laurent Dardenne
Quelques infos :
[url=http://windows.developpez.com/faq/dcom/index.php?page=prog#registry_entries
]Quelles sont les entrées à rajouter dans la base de registres pour enregistrer un composant ?[/url]

[url=http://msdn.microsoft.com/en-us/library/ms678406(v=VS.85).aspx
]COM Class Objects and CLSIDs[/url]
\"Each COM class is identified by a CLSID, a unique 128-bit GUID, which the server must register. COM uses this CLSID, at the request of a client, to associate specific data with the DLL or EXE containing the code that implements the class, thus creating an instance of the object.\"

chm69 écrit:

J'aimerais à partir du fullName d'une Dll, récupérer son CLSID.

Je pense qu'il faut charger la TLB, et si tu veux te faire mal au cheveux ça se passe ici : [url=http://pchapuis.developpez.com/typelibreader/
]Delphi TypeLibReader[/url]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.068 secondes
Propulsé par Kunena