vb6 - 将 VB6 引用注册到 EXE

标签 vb6 registry

所以我的方案是旧服务器需要退休,但它上面的混合平台 Web 解决方案需要移植到新的 Windows 2012R2 服务器。我的背景在所涉及的技术方面没有太多经验,所以我很挣扎,而且所有相关的开发人员几年前都没有任何文档,如果不是更多的话。

经典的 ASP 网站有一个内部 DLL 的引用,我们称之为 IBase.dll。我使用 regsvr32 来注册它并通过一个产生的错误到另一个错误,我将这个错误归结为 IBase.dll 需要它自己的引用注册。

InternetBase error '800a01ad' 

ActiveX component can't create object 

/Secure/CaseDetails.asp, line 333

我设法找到了一个用 VB6 编写的 IBase.dll 项目文件版本。当我进入 Project>References 时,它有一些内部 .exes 的条目。现在,当我尝试在新服务器上对这些进行 regsvr32 注册时(来自 syswow64,虽然我都尝试过)我收到一个错误:

The module "D:\ibase\ibasehelper4.exe" was loaded but the entry-point DLLRegisterServer was not found.

Make sure that "D:\ibase\ibasehelper4.exe" is a valid DLL or OCX file and then try again.

在旧服务器上,我可以看到似乎有助于 DLL 查找这些 EXE 引用的注册表项。我怎样才能正确地尝试注册这些 EXE 以使它们对 IBase.dll 可用?甚至,我可以尝试哪些事情?

最佳答案

自从我上次使用它已经有一段时间了,但是 COM 对象*有两种形式:进程内和进程外。

DLL(和 OCX,对于大多数用途来说只是一个奇特的 DLL)在与调用代码相同的进程中运行,除非您使用 DCOM 并在另一台机器上运行,以及其他令人厌恶的地方。

COM EXE 是进程外的,涉及所有相应的编码和进程间通信开销。

正如 Marc 所指出的,您需要使用/regserver 标志调用 EXE 以加载相关的注册表项。它与 RegSvr32 对 DLL 所做的工作相同。

*故意滥用过去时。我敢肯定,现在一些不幸的人仍在创造新的。

关于vb6 - 将 VB6 引用注册到 EXE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36130455/

相关文章:

c# - 在 VBA 中早期绑定(bind) C# COM 库

c# - 模拟注册表并运行可执行文件以使用该注册表

windows - Windows 注册表中 DefaultConnectionSettings 值的格式是什么?

powershell - 使用 PowerShell 禁用快速访问文件夹选项

c# - 在VB6中理解dw和&H8000&

vb6 - 如何在 VB6 中使用 exec 脚本检索表单值?

c# - DataSet C# 中是否有相当于 RecordSet.bookmark 的功能

winapi - 如何写入使用 FILE_FLAG_NO_BUFFERING 打开的文件的结尾?

powershell - 确定 2017 年安装的 Visual Studio 路径

c++ - 为什么在 VB6 中 COM 接口(interface)名称被 coclass 名称替换?