Office System

The Office Developer Blog (by Luiz Cláudio C. V. Rocha - São Paulo, Brazil)

May 2009 - Posts

Visual Studio .NET 2005/2008: erro "Class not registered" em objetos COM

Ao executar um projeto C# ou VB, recebi a seguinte mensagem de erro:

System.Runtime.InteropServices.COMException was unhandled
  Message="Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))"
  Source="System.Windows.Forms"
  ErrorCode=-2147221164

 

O projeto usa o componente COM ShockwaveFlash ocx, e foi justamente a linha de código que inicializa o controle que disparou o erro.

Tentei baixar nova versão do Flash Player, registrar novamente o ocx, remover a referência e assinalar novamente, apagar o controle do form e recolocá-lo, etc... Nada funcionou.

Suspeitei então que o problema deveria estar relacionado ao fato do meu Windows ser 64 bit. No projeto, abri a janela de propriedades (Project > Properties), guia Build, e mudei o Platform Target de "Any CPU" para x86. Isto resolveu o problema.

Portanto, projetos .NET com referência a objetos COM 32 rodando em Windows 64 provavelmente não funcionarão. Quando acontecer, mude a plataforma-alvo para x86.