[英]Registering a 32 bit DLL with 64 bit regsvr32
考虑以下理解
regsvr32
在通过LoadLIbrary
将目标 DLL 加载到其地址空间后调用入口点DllRegisterServer
/ DllUnregisterServer
。C:\\Windows\\SysWOW64
但是后来在我的 2008 R2 Box 上,我能够通过 64 位 regsvr32 注册一个 32 位 dll。 那怎么可能? 我错过了什么吗?
我想在屏幕截图中突出显示的示例是对话框弹出的最后一个示例。
Mats 和我的假设似乎是正确的。 MS 重新设计了 64 位 regsvr32,以便根据目标 dll 位数,它可能会从 %SYSWOW64% 生成一个新的 32 位 regsvr32 进程来注册 DLL。 为了证明这一点,我启动了 procexp,监视 32 位 DLL 的弹出窗口,这是显示的内容。
需要注意的几件事
这应该解释它究竟是如何发生的:
(来源: alax.info )
regsvr32
将在内部启动它的另一个位孪生以匹配 DLL 的位。 这样注册就成功了。 您无需关心是启动 32 位还是 64 位版本的regsvr32
因为它会处理不匹配问题。
需要注意的情况是从 Visual Studio 启动regsvr32
作为调试主机。 您需要正确的位数,因为具有实际注册的子进程将在调试器之外运行,您将无法单步执行代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.