Regsvr32在Windows 7上崩溃

时间:2010-09-08 08:10:04

标签: c++ com regsvr32

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

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

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

所有相同,但编译为Win32(32位)工作正常,注册时没有问题

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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