安装64位office与今达造价类软件冲突解决办法

现在很多的软件都是基于64位系统开发的,而很多软件的最新版本也需要64位office给予支持。而微软在office的web插件api也推荐使用32位的。这就导致了很多使用32位的程序和使用64位的程序无法共存。

情况1:例如紫金矿业的OA系统需要32位web-word支持,这就会让你很难受,你只可以安装32位的office才相对保险,如果你安装了64位的office套间,那就可能出现大概率的不兼容情况出现。有人说,那我安装32位的不就好了吗,事实上很多软件只支持64位的,例如我们搞矿业的用的软件surpac6.6以后的版本、3dmine2015版本等等,均需要64位的Database支持。

情况2:很多软件的api调用的是32位的api,但是系统是64位的。就比如我今天出的问题,我用的是今达有色金属工业定额软件,他调用的Microsoft Access Engine是32位的(我如何发现软件报错的原因在后话)。而本机安装了64位的office,其中已经因为这些东西把注册表干了一遍,勉勉强强让64位的office、32位的OA、64位的Project、32位的今达黄金等等软件共存了,后来手贱,用了一个绿色小软件(专门针对无法安装64位office),导致今天打开软件提示类无法注册。

错误提示如下:
《安装64位office与今达造价类软件冲突解决办法》
《安装64位office与今达造价类软件冲突解决办法》
错误提示:Access violation at address 00A41B89 in module
一看到到没有注册类,我就感觉可能是调用dll文件没有注册,于是我打开OD查看一下00A41B89地址。发现是个堆栈,里面有两个eps,应该是汇编时加密了,设了个断点,跟进一下,重新载入,查看了一下挂载DLL。
《安装64位office与今达造价类软件冲突解决办法》
《安装64位office与今达造价类软件冲突解决办法》
发现原来是这类DLL库文件没有注册调用,可能是软件申明直接调用的32位的程序
打开文件夹发现原来是Microsoft Access Engine是32位的。
在cmd打开,用regsvr32命令注册了一下,发现没办法注册,此条线路中断,发现网上搜索出来的答案基本都不靠谱。
1、网上找到的方法1(失败)
《安装64位office与今达造价类软件冲突解决办法》
《安装64位office与今达造价类软件冲突解决办法》 
2、 把注册表保存之后重新干了一遍,直接系统崩溃了,所以具体过程我就不用再描述了。
3、整理下思绪,考虑下是不是方向错了。最后自己写了段asp代码调用数据库文件,竟然显示了,这就基本排除了以上所有的情况。一开始以为这个access就是Database的access,先入为主了,最后英文不好的我百度了一下,实际上是非法入口。和dll文件与DB数据库基本无任何关系!
打开软件发现只有报表输出的时候会报错,找到出入代码显示的这个进程Grid,我一看这东西就自以为是的认为一定是系统函数,继续把相关挂载的dll文件干了一边,依然报错。就百度了一下,发现原来这个Grid指的是Grid++Report 报表设计器,我下载了一个重新安装,问题得以解决。

总结:遇到问题可以用经验来判断,系统解决问题的方法一定要会,先入为主必然会导致水平只会停留在原地。算是一个教训把

后记:实际上今达软件,安装包都自带了这个软件的安装,我为什么会出现这个问题,实际上还是在安装office的时候手动干注册表时候导致文件报表软件损坏。后来在软件安装包(使用wise封装的,这个软件厂家也是无语了哈,除了数据库和结构表其他东西基本都是别人家搬过来的),提取出了bat文件,里面就有注册表关联文件,问题一目了然。如果当时自己不要自以为是,那么不会走那么多弯路。

纸上得来终觉浅,绝知此事要躬行。

发表回复