C++ Windows 7上的Regsvr32崩溃

C++ Windows 7上的Regsvr32崩溃,c++,com,regsvr32,C++,Com,Regsvr32,我有一个x64(64位)COM dll。在Windows 7上尝试向Regsvr32注册时-Regsvr32崩溃 Regsvr32是在具有管理权限的cmd下运行的(“以管理员身份运行”),我尝试了32位和64位cmd.exe以及regsvr.exe,即使是两台不同的电脑,它总是一样的 调试崩溃的Regsvr32报告发生了缓冲区溢出,可能是什么问题 尽管如此,但编译为Win32(32位)运行良好,在注册方面没有问题。显然,问题在于缓冲区溢出。现在Win32和Win64进程的内存布局将有所不同,尤其

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

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

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


尽管如此,但编译为Win32(32位)运行良好,在注册方面没有问题。显然,问题在于缓冲区溢出。现在Win32和Win64进程的内存布局将有所不同,尤其是ASLR。因此,不能肯定缓冲区溢出会对Win32产生相同的影响。对于像Regsvr32这样的东西来说尤其如此,它将调用DLL中的一个函数并退出。这限制了缓冲区溢出可能损坏数据的时间


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

最有可能的是,该DLL中的
DllRegisterServer()
的实现在编译为64位时崩溃

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