VC6 正在记住一个 ActiveX 控制器使用的 dll 位置,但我找不到更改它的位置

Posted

技术标签:

【中文标题】VC6 正在记住一个 ActiveX 控制器使用的 dll 位置,但我找不到更改它的位置【英文标题】:VC6 is remembering a dll location that an activeX controller uses and I cant find where to change it 【发布时间】:2014-09-19 11:00:02 【问题描述】:

我刚刚添加了一个我制作的 ActiveX 控制器(它使用我制作的 dll),将一个项目从一个目录移动到另一个目录。我从来没有告诉 VC6 在哪里可以找到 dll,我所做的只是添加 ActiveX 控制器,当我部署项目时它工作正常但我无法远程调试,当我这样做时它说找不到文件并说明旧位置dll(在项目中,我将 dll 放在项目目录的根目录中并且它可以工作,所以我没有质疑它)我已经对项目中的所有字段进行了文本搜索检查了 dll 和 activeX 代码注册表和 VC6 项目的设置,我在任何地方都找不到对这个旧文件路径的引用,有什么想法吗?

【问题讨论】:

Visual Studio 6,你是认真的吗? 我不能评判我的公司 :) 该位置存储在注册表中,由 Regsvr32.exe 放在那里。构建控件时自动完成。这也需要在远程机器上发生,它不是自动的。它怎么能记住旧路径很难猜测,DLL中的注册码应该是borken。或者您只是通过自己入侵注册表而错误地注册了它。 在两台计算机的注册表中都没有引用旧路径... regsvr32 作为安装程序的一部分自动完成 activex 构建的最后一步是自动向 Regsvr32.exe 注册二进制文件。如果您想将二进制文件移动到另一个位置,只需将 dll 文件复制到新位置并手动使用 Regsvr32.exe 再次注册,然后 dll 文件的新位置将更新到注册表中。例如:Regsvr32 c:\NewDllDirectory\MyDll.dll 【参考方案1】:

什么版本的 Windows?如果它是 64 位,您确定您正在查看正确的注册表树,32 位和 64 位有不同的。使用 VC6 构建的 DLL 注册在 32 位部分。

【讨论】:

以上是关于VC6 正在记住一个 ActiveX 控制器使用的 dll 位置,但我找不到更改它的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net用户控件(ascx)中插入activex

flash activex 控制 64bit

ActiveX 控件版本控制和签名

Access 数据库窗体 ActiveX 控件错误

ActiveX 属性持久性

如何让程序暂停,然后有自己控制再运行!求助!vc6.0