System.Runtime.InteropServices.COMException(0x80040154)

时间:2010-07-02 08:20:30

标签: c# dll unhandled-exception

当我尝试在目标计算机上解组我的应用程序时,我收到此错误。

我用Google搜索并发现有些dll需要注册(在我的应用程序中使用)

因此,我将dll复制到System32并执行了regsvr32

然后我收到了这个错误

  

已加载Interop.ShockwaveFlashObject.dll但未找到DllRegisterServer入口点。该文件无法注册

一个奇怪的是,应用程序不能只在一台机器上运行。我在10台不同的机器上测试过,一切运行良好。它不仅适用于一台机器。

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

Interop dll不需要注册它实际上包含指向现有COM注册对象的指针。

如果它遵循通常的命名约定,看起来好像ShockwaveFlashObject.dll没有在机器上注册(这将是你应该运行regsvr32的DLL)。大概你需要安装Shockwave / Flash(和/或检查安装的版本是否合适,如果你认为它已经在盒子上)。

答案 1 :(得分:1)

例如,您可以以管理员身份运行cmd并浏览到system32目录并运行以下命令:

for %1 in (*.dll) do regsvr32 /s %1

for %1 in (*.ocx) do regsvr32 /s %1

答案 2 :(得分:0)

那个interop dll不是一个需要在regsvr32.dll中注册的COM dll,它是一个interop dll来管理COM东西和托管内容之间的链接,我相信。

可能你需要注册一些其他的dll(即任何&所有COM dll,可能是ShockwaveFlashObject.dll),或者你还有其他一些缺失的依赖项。与它所使用的机器相比,它不起作用的机器有什么不同?是否所有依赖项都安装在所有计算机上(如flash?)os是否与众不同?也许一些较新的操作系统没有旧机器所具有的所有旧依赖关系。