使用mfc42.dll作为免费注册COM?

时间:2011-06-15 20:41:01

标签: windows com activex

我正在使用第三方Active-X控件,需要在用户系统上安装某个版本的MFC42.dll。

我正在尝试添加对我的产品的非管理员安装的支持,并且必须安装,例如mfc42.dll到系统文件夹并注册它显然使这不可能。

第三方Active-X通过使用清单文件用作免注册COM,我想知道是否可以对MFC42.dll和MSVCRT.DLL执行相同的操作并将它们存储在应用程序文件夹中?有人试过这个吗?

1 个答案:

答案 0 :(得分:2)

这是不可能的。 MSVCRT和MFC42.dll不是COM对象甚至是win32程序集,因此无法使用免注册COM访问。

您可以安装mfc42.dll和msvcrt.dll app-local。系统将优先于系统32中的副本的app目录。

(有关DLL绑定如何发生的详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms682586(v=VS.85).aspx。)

除了非常旧的操作系统(Win2k之前)之外,您不需要安装这些DLL,因为每个版本的Windows上都安装了最新的和二进制兼容的副本,直到Windows 7。

但是,即使您这样做,您仍然需要为ActiveX控件及其依赖的任何COM对象(例如代理/存根)合成一个无reg的COM清单。 SDK包含的工具可以帮助解决这个问题,但是如果你没有ActiveX控件的源代码,那么它可能是非常重要的。另请注意,IE不能导致加载无注册的COM AX控件。这仅适用于其他AX主机,如ATL或MFC。

最后注意事项:您还应该努力避免依赖构建在mfc42或msvcrt上的任何组件。这些是使用非常旧版本的VS工具集构建的,缺少许多重要的错误修复和安全更新。而针对它们的VC6工具集(从1998年开始)在相当长的一段时间内都没有得到支持。

马丁