2011-06-15 75 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