我有一个VB6应用程序我试图在Windows 7环境中工作,但是每次启动应用程序时,都会收到错误:
“组件'ComCt332.ocx'或其某个依赖项未正确注册:文件丢失或无效”。
要解决此问题,我尝试通过在管理员模式下的命令提示符中运行regsvr32来注册comct332.ocx文件,但后来我收到错误:
“模块”comct332.ocx“已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005”
我尝试过的其他事情包括:
删除注册表中存在“comct332.ocx”的所有父节点 并在管理员模式下再次运行regsvr32。同样的结果。
我向PC上的其他用户授予了管理员权限,我可以注册 文件成功,应用程序启动并成功运行! 但是,当我再次以前一个用户身份登录时,它失败了。
任何帮助,想法,其他尝试的东西都会受到很大的影响。感谢
答案 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管理凭据
根据需要。
为了获得成功,还需要了解和处理许多其他事项。如果你忽略了那些,那么只有在你的程序安装完成后才能让你明白并运行它们。其中很多都源于文件系统虚拟化。