Интерфейс .NET COMException не зарегистрирован - PullRequest
3 голосов
/ 18 октября 2010

Я не могу этого понять.Я хочу использовать OCX от этого поставщика http://www.mobyt.it/ для отправки SMS.Это dll, и они предоставляют примеры использования в Vb, .NET, Visual C и т. Д.

Исключение, которое я получаю:

System.Runtime.InteropServices.COMException (0x80040154): Интерфейсне зарегистрирован.(Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

Я ломаю голову.Похоже, что COM-объект не зарегистрирован, но как мне его зарегистрировать?Я попытался с regsvr32 с удачей.

1 Ответ

7 голосов
/ 18 октября 2010

При условии правильной регистрации стандартный режим сбоя работает в 64-разрядной версии Windows.Подобные COM-серверы почти всегда можно использовать только из 32-битного кода.Щелкните правой кнопкой мыши ваш проект EXE> Свойства> вкладка «Сборка»> Цель платформы = x86.Установите флажок «Предпочитать 32-разрядный», если он доступен и включен.Повторите эти действия для конфигурации выпуска.

Следующий подход - использовать Regedit.exe и убедиться, что он действительно зарегистрирован.Перейдите к HKLM\Software\Wow6432Node\Classes\CLSID\{guid}, где {guid} - это GUID, полученный из сообщения об ошибке.В 32-разрядной операционной системе вы найдете ее в HKLM \ Software \ etc.

Следующий подход - использовать утилиту ProcMon компании SysInterals для наблюдения за вашей программой, которая ищет реестр и пытается загрузить DLL.

Следующий подход - обратиться к поставщику за поддержкой.

И тогда вы перестаете пытаться заставить его работать.

...