comct332.ocx的DllRegisterServer失败

时间:2012-08-20 04:34:49

标签: windows-7 vb6 ocx regsvr32 dllregistration

我有一个VB6应用程序我试图在Windows 7环境中工作,但是每次启动应用程序时,都会收到错误:

“组件'ComCt332.ocx'或其某个依赖项未正确注册:文件丢失或无效”。

要解决此问题,我尝试通过在管理员模式下的命令提示符中运行regsvr32来注册comct332.ocx文件,但后来我收到错误:

“模块”comct332.ocx“已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005”

我尝试过的其他事情包括:

  • 删除注册表中存在“comct332.ocx”的所有父节点 并在管理员模式下再次运行regsvr32。同样的结果。

  • 我向PC上的其他用户授予了管理员权限,我可以注册 文件成功,应用程序启动并成功运行! 但是,当我再次以前一个用户身份登录时,它失败了。

任何帮助,想法,其他尝试的东西都会受到很大的影响。感谢

1 个答案:

答案 0 :(得分:2)

如果你一直在努力,如果你要继续成功地继续使用VB6,那么你会发现很多事情。

  • 其中之一是UAC和每用户注册表的影响 虚拟化。

  • 另一个是SysWOW注册表重定向对64位的影响 系统

您将了解正确的安装包比以往任何时候都更重要。 Windows对遗留软件进行了许多自动修复,但其中一些不会导致应用程序具有所有原先预期的行为。只有当您的应用程序“从正确的路径”从安装到第二次运行时,才会应用它们中的大多数。

这里我们有一个案例,旨在通过使用正确的Windows Installer程序包来处理,或至少通过Windows的“旧版安装程序检测启发式”识别出这样的遗留设置。一般情况下,旧的脚本化设置已被弃用,但只要它们在路径上 ,Windows就会努力确保它们成功。

通过复制一堆文件并在其中一些文件上随机运行regsvr32进行手动部署,降低了成功的可能性。无论如何,这绝不是一种经批准的部署方法。

您最有可能与注册表虚拟化和重定向的某种组合相冲突。

regsvr32实用程序是一种开发工具,而不是部署工具。如果您坚持尝试将其用于部署,则必须遵循开发人员必须遵循的相同规则:

  • 运行正确的版本。在64位系统上有64和64 此实用程序的32位版本。你必须的32位版本 use位于SysWOW64文件夹中。

  • 从提升的命令提示符运行它。一个简单的 开始之一的方法是键入<Winkey>cmd.exe<Ctrl-Shift-Enter>然后 批准UAC提示或提供over-the-shoulder管理凭据 根据需要。

为了获得成功,还需要了解和处理许多其他事项。如果你忽略了那些,那么只有在你的程序安装完成后才能让你明白并运行它们。其中很多都源于文件系统虚拟化。