"Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))"
Я пытаюсь использовать приложение, приложение работает нормально, я пытаюсь редактировать существующий элемент в приложении. при нажатии на кнопку редактирования я получаю следующую ошибку:
System.Runtime.InteropServices.COMException was unhandled
Message="Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))"
Source="System.Windows.Forms"
ErrorCode=-2147221164
StackTrace:
at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
at System.Windows.Forms.AxHost.CreateInstance()
at System.Windows.Forms.AxHost.GetOcxCreate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()
at bulk_lister.frm_edititem.InitializeComponent() in New Bulklister\new bulklister\bulk_lister\bulk_lister\frm_edititem.designer.cs:line 4248
at bulk_lister.frm_edititem..ctor(Int32 userid, Int32 intListingId) in New Bulklister\new bulklister\bulk_lister\bulk_lister\frm_edititem.cs:line 187
at bulk_lister.parent_form.funEditItem_fromrghtclktoolStrip_edititm() in New Bulklister\new bulklister\bulk_lister\bulk_lister\parent_form.cs:line 1313
at bulk_lister.parent_form.rghtclktoolStrip_edititm_Click(Object sender, EventArgs e) in New Bulklister\new bulklister\bulk_lister\bulk_lister\parent_form.cs:line 1233
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at bulk_lister.Program.Main() inNew Bulklister\new bulklister\bulk_lister\bulk_lister\Program.cs:line 17
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
at System.Activator.CreateInstance(ActivationContext activationContext)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Это с файлом Dll, который я использовал с моим приложением. Я пытался зарегистрировать этот файл DLL с помощью regsvr32, но я не могу сделать это.
DLL:AxInterop.DHTMLEDLib.dll & Interop.DHTMLEDLib.dll
У кого-нибудь есть идеи по этому исключению?
8 ответов
Какова целевая платформа вашего приложения? Я думаю, что вы должны установить платформу x86
, не устанавливайте его в Any CPU
,
Вероятно, это не решение вашей проблемы, а предложение на всякий случай (я знаю, что сталкивался с подобной проблемой раньше, но не с приложением.NET).
Если вы на 64-битной машине, есть 2 regsvr32.exe
файлы; Один в \Windows\System32
а другой в \Windows\SysWOW64
,
Вы не можете зарегистрировать 64-битные COM-объекты в 32-битной версии, но вы можете сделать это наоборот. Я бы попробовал зарегистрировать вашу DLL с обоими regsvr32.exe
файлы явно (т.е. набираяC:\Windows\System32\regsvr32.exe /i mydll.dll
" а потом "C:\Windows\SysWOW64\regsvr32.exe /i mydll.dll
и посмотрим, поможет ли это...
Я получил ту же ошибку с компонентом vlc, когда я изменил каркас с 4.5 на 4. Но он сработал для меня, когда я изменил платформу с любого процессора на x86.
То, на что я наткнулся сегодня на DLL, которая, как я знал, прекрасно работала с моим проектом VS2013, но не с VS2015:
Идти к: Project -> XXXX Properties -> Build -> Uncheck "Prefer 32-bit"
Этот ответ запоздал и, вероятно, не принесет пользы, но если вы. Но я надеюсь, что когда-нибудь это кому-нибудь поможет.
Мое исправление состояло в том, чтобы создать платформу в диспетчере конфигурации в Visual Studio и установить x64
[HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Просто глядя на сообщение, оно звучит так, как будто один или несколько компонентов, на которые вы ссылаетесь, или одна или несколько их зависимостей не зарегистрированы должным образом.
Если вы знаете, какой это компонент, вы можете использовать regsvr32.exe для его регистрации, просто откройте командную строку, перейдите в каталог, где находится компонент, и введите regsvr32 filename.dll (если это dll), если он работает, попробуйте запустите код снова, иначе вернитесь сюда с ошибкой.
Если вы не знаете, какой это компонент, попробуйте переустановить / восстановить программное обеспечение ГИС (я предполагаю, что вы установили некоторое программное обеспечение ГИС, которое включает компонент, который вы пытаетесь использовать).
После ряда попыток я пришел к легкому решению. Вы можете попробовать переустановить плагин ActiveX для Adobe FlashPlayer.
Откройте cmd как администратор, затем попробуйте зарегистрироваться в обоих местах