【问题标题】:Regsvr32 crashes on Windows 7Regsvr32 在 Windows 7 上崩溃
【发布时间】:2011-04-09 14:34:21
【问题描述】:

我有一个 x64(64 位)COM dll。在 Windows 7 上尝试使用 Regsvr32 注册时 - Regsvr32 崩溃。

Regsvr32 在 cmd 下以管理权限运行(“以管理员身份运行”),我尝试了 32 位和 64 位 cmd.exe 和 regsvr.exe,即使是两台不同的 PC,它总是相同的。

调试崩溃的 Regsvr32 报告缓冲区溢出发生,可能是什么问题?

都一样,但是编译成Win32(32位)可以正常工作,注册也没有问题

【问题讨论】:

    标签: c++ com regsvr32


    【解决方案1】:

    在为 64 位编译时,该 DLL 中的 DllRegisterServer() 的实现很可能会崩溃。

    如果您有 DLL 的源代码,最好的办法是在执行代码时对其进行调试并解决问题的根本原因。这可能是代码不是以位无关(32 位/64 位可移植)方式编写时通常发生的任何错误。

    【讨论】:

      【解决方案2】:

      显然,问题在于缓冲区溢出。现在 Win32 和 Win64 进程的内存布局会有所不同,尤其是使用 ASLR。因此,您不能肯定地说缓冲区溢出会对 Win32 产生相同的影响。对于像 Regsvr32 这样的东西尤其如此,它将调用 DLL 中的一个函数并退出。这限制了缓冲区溢出损坏数据的时间。

      解决方案当然是修复缓冲区溢出。

      【讨论】:

        猜你喜欢
        • 2021-02-04
        • 2012-07-17
        • 2012-07-16
        • 1970-01-01
        • 2013-01-20
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        相关资源
        最近更新 更多