32位应用程序在win7 64位中运行 控件注册问题

时间:2023-02-11 19:55:40

今天测试反馈过来一个bug,由于项目需要,现场用的是win7 64位pc,我们平台的服务器在该环境下运行出现问题,而在xp 32位环境下运行正常。

第一反应就是不同系统下dll版本不同引起的,于是去查两个环境下服务器依赖的文件版本。这过程中发现一个问题,原先服务器在打包时指定安装路径为系统目录下的system32文件夹下,但是64位pc上却被安装在了系统目录下的syswow64文件夹下,难道问题就是这个引起的?网上查了下,syswow64是操作系统(64位)的一个子系统,可以理解为是64位系统中模拟的一个32位的环境,为了兼容32位的应用程序。而在64位系统中安装32位应用程序时,系统会将原本要安装在system32文件夹下的文件自动(重定向)到syswow64文件夹下。

照以上情况看来,理论上说我们在32位环境下开发的服务器安装在64位操作系统中应该也是没有问题的。从业务流程上逐步跟踪调试发现,一个连接web客户端与服务器的控件存在问题,查看其详细注册方式,路径写死为系统目录下的system32,而根据上文所述,该文件存在于syswow64目录下。于是重新注册(regsvr32 %systemroot%\syswow64\xxx.ocx)该文件,提示注册成功,调试后问题得到解决。

原先控件注册是用脚本实现,那么为了应对不同系统,需要在注册前判断运行的系统目录,然后进行注册。

 

 参考资料:http://bbs.pcbeta.com/viewthread-282154-1-1.html