2011-06-15 68 views
1

我正在使用第三方Active-X控件,该控件需要在用户系统上安装某个版本的MFC42.dll。使用mfc42.dll作为免费注册COM?

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

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

回答

2

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

您可以安装mfc42.dll和msvcrt.dll app-local。系统将倾向于系统32中副本上的应用程序目录。

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

你不应该需要,因为先进的日期和二进制兼容的副本被安装在Windows的各个版本,一直到Windows 7

安装这些DLL除了很老的操作系统(预Win2k的)但是,即使你这样做,仍然需要为ActiveX控件及其依赖的任何COM对象(如代理/存根)合成免注册的COM清单。 SDK包含的工具可以帮助解决这个问题,但是如果您没有ActiveX控件的源代码,它可能并不重要。另请注意,不能导致IE无法加载无reg的COM AX控件。这只适用于其他AX主机,如ATL或MFC。

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

Martyn