gpt4 book ai didi

c++ - 使用 64 位 regsvr32 注册 32 位 DLL

转载 作者:可可西里 更新时间:2023-11-01 12:37:15 24 4
gpt4 key购买 nike

考虑以下理解

  1. 32 位进程无法加载 64 位 dll,反之亦然。
  2. 用于注册/注销 DLL regsvr32 在通过 将目标 DLL 加载到其地址空间后调用入口点 DllRegisterServer/DllUnregisterServer >加载库
  3. 在 64 位系统上,regsvr32 的 32 位版本位于 C:\Windows\SysWOW64

但是在我的 2008 R2 Box 上,我能够通过 64 位 regsvr32 注册一个 32 位 dll。这怎么可能?我错过了什么吗?

enter image description here

我想在屏幕截图中突出显示的示例是弹出对话框的最后一个示例。

最佳答案

这应该可以准确解释它是如何发生的:


(来源:alax.info)

regsvr32 将在内部启动它的另一个位数孪生以匹配 DLL 的位数。这样注册就成功了。您无需关心是启动 32 位还是 64 位版本的 regsvr32,因为它会处理不匹配问题。

您需要注意的场景是当您从 Visual Studio 作为调试主机启动 regsvr32 时。您需要正确的位数,因为具有实际注册的子进程将在调试器之外运行,您将无法逐步执行代码。

关于c++ - 使用 64 位 regsvr32 注册 32 位 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18935163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com