106 votes

Comment résoudre la classe d'exception COM non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG)) ?

Lorsque j'essaie de créer une instance d'une classe COM, elle lance une exception comme

Classe non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG))

S'il vous plaît suggérer comment pourrais-je le résoudre ?

67voto

Andy Fiedler Points 171

Vous devez vous assurer que tous vos assemblages sont compilés pour la bonne architecture. Essayez de changer l'architecture pour x86 si la réinstallation du composant COM ne fonctionne pas.

50voto

Jay Riggs Points 30783

Il semble que quel que soit le programme ou le processus que vous essayez d'initialiser, il n'est pas installé sur votre machine, a une installation endommagée ou doit être enregistré.

Installez-le, réparez-le (via Add/Remove Programs) ou enregistrez-le (via Regsvr32.exe).

Vous n'avez pas fourni suffisamment d'informations pour que nous puissions vous aider davantage.

11voto

Andrew Keith Points 5627

Notez également que le contexte de classe lors de l'initialisation peut créer cette exception. Si vous avez un objet qui est codé comme INPROC_SERVER mais que vous essayez de CoCreateInstance comme CLSCTX_LOCAL_Server, vous obtiendrez également cette erreur.

Vous devez vous assurer que l'objet est enregistré et que la CoCreateInstance crée une instance avec le contexte de classe correct.

9voto

Matsen75 Points 136

Si vous utilisez des composants COM 64 bits dans une application Web sur IIS, assurez-vous que le pool d'applications est configuré pour ne pas autoriser les applications 32 bits (Activer les applications 32 bits : false dans les paramètres avancés)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X