将32位COM DLL注册到64位Windows 7
我有一个32位的COM组件DLL,这个DLL是用Delphi编写的。 这是一个Win32 DLL。 我想在.NET平台上的Visual C#项目中使用这个DLL。
我无法在项目中添加对此DLL的引用。 我尝试以Windows 7 64位pipe理员身份在“命令提示符”中进行注册,但出现此错误:
检查模块是否与regsvr32.exe的x86(32位)或x64(64位)版本兼容。
首先我把DLL文件放到windows / system32文件夹中。 然后我以pipe理员身份打开命令提示符。 我写regsvr32 huginalpha.dll
并执行这个命令。 但是我得到错误。 我能做什么?
问题可能是您尝试使用64位版本的regsvr32注册32位库。 看到这个知识库文章 – 您需要从Windows \ SysWOW64 32位库运行regsvr32。
对于Windows 64位平台中的32位DLLS:
- 将whatever.dll复制到
c:\windows\sysWOW64\
- 打开CMD提示作为pipe理员(非常重要)
在CMD窗口中:
-
CD c:\windows\sysWOW64\
-
regsvr32 whatever.dll
您将然后执行一个32位dll上的32位regsvr( c:\windows\sysWOW64\regsvr.exe
)
http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html
检索具有CLSID {…}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。
如果你尝试这个;
c:\ windows \ system32 \ regsvr32.exe <filename> .dll
你仍然可以采取这种例外。 所以IIS池高级设置,启用32位应用程序:true;)
我相信现在事情已经改变了。 在My Win 2008 R2 Box上,我能够注册一个64位regsvr32的32位dll,因为64位版本可以检测到目标位,并从%SYSWOW%文件夹产生一个新的32位regsvr32。
请参阅: 使用64位regsvr32注册32位DLL
要在Windows 7 32位上注册comm .dll或.ocx,请执行以下操作:
将.dll或.ocx复制到c:\windows\system32
在运行菜单中键入cmd,它将searchcmd.exe,右键单击并单击Run as Administrator
它将在c:\windows\system32
显示提示
types
regsvr32 ocxname.ocx
注册.ocx
要么
键入regsvr32 dllname.dll
注册.dll
把dll放在system32或syswow32目录下,然后用适当的regsvr32来注册它。 wiered,即使它给失败注册错误,我重新启动我的WIN 7 64和我的VB应用程序加载DLL就好!
如果问题没有解决,使用SysWoW64版本的regsvr32时,确保所有库依赖关系具有相同的架构。 例如,什么时候
regsvr32 lib_x86.dll
无法注册库,并且%SystemRoot%\SysWow64\regsvr32 lib_x86
也失败,请尝试将lib_x86
加载到Dependency Walker应用程序以查看整个依赖关系列表。 如果有任何项目有64位架构,这是为什么regsvr32
无法加载32位库的原因。
两个版本的RegSvr32(32位和64位)出现错误“模块可能与此版本的Windows兼容”。 我正在尝试注册一个在Server 2008 R2(x64)中为XP(32位)构build的DLL,并且没有任何Regsr32解决scheme适用于我。 但是,在适当的.Net中注册程序集对我来说非常合适。 C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ RegAsm.exe
下面的链接保存了一天
https://msdn.microsoft.com/en-us/library/ms229076(VS.80).aspx
使用上述链接中指定的相关RegSvcs
C:\ WINDOWS \微软。 NET \ Framework \ v4.0.30319 \ RegSvcs.exe …. \ Shared \ Your.dll /tlb:Your.tlb
尝试在Framework64上运行它。
例:
-
32位
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase
-
64位
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase