Windows 7 针对comct332.ocx的DllRegisterServer失败

Windows 7 针对comct332.ocx的DllRegisterServer失败,windows-7,vb6,ocx,regsvr32,dllregistration,Windows 7,Vb6,Ocx,Regsvr32,Dllregistration,我有一个VB6应用程序,我正试图在Windows 7环境下工作,但每次启动该应用程序时,都会出现以下错误: “组件'ComCt332.ocx'或其依赖项之一未正确注册:文件丢失或无效”。 为了解决此问题,我尝试在管理员模式下通过在命令提示符下运行regsvr32来注册comct332.ocx文件,但随后出现错误: “已加载模块“comct332.ocx”,但对DllRegisterServer的调用失败,错误代码为0x80004005” 我尝试过的其他事情包括: 正在删除注册表中存在“comc

我有一个VB6应用程序,我正试图在Windows 7环境下工作,但每次启动该应用程序时,都会出现以下错误:

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

为了解决此问题,我尝试在管理员模式下通过在命令提示符下运行regsvr32来注册comct332.ocx文件,但随后出现错误:

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

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

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

  • 我向电脑上的另一个用户授予了管理员权限,我可以注册 文件成功,应用程序成功启动并运行! 然而,当我再次以前一个用户的身份登录时,它失败得很惨


任何需要尝试的帮助、想法和其他事情都将非常感谢。谢谢

如果您一直坚持必须做的事情,如果您要继续成功地使用VB6,您会注意到很多事情

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

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

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

这里我们有一个案例,打算通过使用合适的Windows Installer软件包来处理,或者至少是通过Windows的“遗留安装程序检测启发法”来识别的遗留安装程序。一般来说,遗留脚本设置是不推荐的,但只要它们停留在Windows努力确保成功的路径上

通过复制一堆文件并在其中一些文件上随机运行
regsvr32
来手动部署,成功的几率会降低。无论如何,这从来都不是一种经过批准的部署方法

您很可能遇到了注册表虚拟化和重定向的某些组合

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

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

  • 从提升的命令提示符运行它。容易的 开始一个的方法是键入
    cmd.exe
    批准UAC提示或提供间接管理员凭据 根据需要


为了取得成功,你还需要知道和处理许多其他事情。如果您忽略了这些内容,那么大多数内容只有在您的程序安装并运行后才会显现出来。它们中的很多都源于文件系统虚拟化。

感谢您提供的信息。更让人困惑的是,当我用不同的帐户登录到同一台电脑并安装了相同的MSI时,它没有手动运行
regsvr32
。但是作为一个测试,我还是运行了它,它注册了
comct332.ocx
,没有错误。手动干预此文件的部署只是因为应用程序在成功安装后立即出现第一个错误而失败。这并不能真正让事情变得更清楚。您说您安装了MSI,然后“它”在没有运行regsvr32的情况下工作。什么是“它”-微星?应用程序的运行?然后“it”注册
comct332.ocx
,无误。这是什么“它”-别的什么?我的错,让我们把它弄清楚。在工作帐户/配置文件上,我可以安装MSI并运行实际应用程序,而不会出现任何错误,并且根本不使用
regsvr32
。对于任何“运行”MSI的帐户,都会出现UAC提示,以便进行简单批准或输入间接管理凭据。当然,这假定您已经将其构建为每台机器的MSI,而不是每用户的MSI,并且您没有篡改UAC设置。您是否将
alluser=1
添加到MSI数据库的
Properties
表中?如果您使用的是Visual Studio(VSI 1.1等),则在构建MSI后使用Orca.exe编辑MSI以添加此属性。嗨,Bob。我遵照您的指示,现在应用程序正在运行。我所做的是将
ALLUSERS
属性添加到MSI中,从该PC上的所有配置文件中卸载MSI,然后从工作配置文件中重新安装MSI。之后,当我登录到应用程序不工作的配置文件时,它现在可以毫无怨言地归档了。非常感谢!