Regsvr32在Windows 7上崩溃

问题描述:

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

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

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

都是一样的,但是编译为Win32的(32位)工作正常,并在注册

当编译为64位时,该DLL中的DllRegisterServer()最有可能崩溃。

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

显然没有问题,问题是你有一个缓冲区溢出。现在Win32和Win64进程的内存布局将有所不同,尤其是对于ASLR。因此你不能肯定地说,缓冲区溢出在Win32上会有相同的效果。对于像Regsvr32这种情况尤其如此,它会调用DLL中的一个函数并退出。这限制了缓冲区溢出可能会损坏数据的时间。

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