创建ActiveXObject ADODB.Stream时报错:automation服务器不能创建对象

先说句废话:通过解决“automation服务器不能创建”这个问题,总算是见识到了什么叫做“网上文章一大抄,看你会抄不会抄”了,各种解决方案,但都大同小异,且能用的很少,且大部分都是抄抄抄的,有真知灼见的很少。个人为这个问题也折腾了一整天,认为网上比较有用的方法主要有以下三种:

第一种、 new ActiveXObject("ADODB.Stream")中的ADODB写错了,写成了别的譬如abodb,abodo什么的,这几个字有一个写错的都会报automation服务器不能创建的错误;

第二种IE浏览器中安全级里关于ActiveX控件的设置,主要设置可以参考这里,这几个设置是必须要的,很重要;

第三种、修改注册码,将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}中的Compatibility Flags的值由400改成0,Compatibility Flags的值为400时说明ADODB.Stream是被禁用的,设置为0以后就启用了,也就可以创建爱你了。对了,在修改的时候,注意要在选择“十六进制”的情况下设置为0而不是十进制

另外,我还发现一个怪事:使用new ActiveXObject("ADODB.Stream")的浏览器的位数与操作系统的位数有关,当操作系统是32位时使用32位的IE可以成功创建ActiveXObject,64的时候也是一样。若是本身是64位的操作系统在32为的IE中创建对象一定会报automation服务器不能创建对象。我在我64位操作系统的机器上架设了一个web项目,创建了ActiveXObject("ADODB.Stream"),使用配置了以上后两部操作的32位的IE8访问,死活报 automation服务器不能创建对象的问题,换到32位的操作系统中,也配置了以上后两部操作的IE6中却能够成功创建,换成别的32位操作系统的IE8浏览器也没有问题。很明显这与浏览器没有关系,于是我使用64位的IE8浏览器访问64位操作系统中的项目,也能创建成功。

所以最后的结论就是:确保第一种情况没有为的情况下,配置第二部第三步,一般都这里就没有问题了,若还有问题,就查查电脑的操作系统是不是64位的,因为默认的IE是32位的,32位与64位不一致所以不能创建,可以通过C:\Program Files\Internet Explorer\iexplore.exe打开64位的IE,然后重新访问,应该就没有问题了。

PS:以上结论,只是在IE6和IE8两大版本中测试,在IE11中无论如何创建不成功,以上说的几种方法不行,网上搜到的其他方法如

1、安装msxml

2、执行regsvr32 jscript.dll、regsvr32 vbscript.dll、regsvr32 scrrun.dl、regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"、regsvr32 "C:\Program Files (x86)\Common Files\System\ado\msadomd.dll"

等命令也不能成功,目前个人还没有找到解决的办法,有能解决的,麻烦留个言告知一声,不胜感激。

PPS:默认32位的IE浏览器的路径为:C:\Program Files (x86)\Internet Explorer\iexplore.exe

PPPS:执行regsvr32 jscript.dll若是报“已加载但是调用失败”的错误,一般有两种方法可以解决:

a、下载一个msxml然后安装,安装完成之后再执行,一般就只有一个regsvr32 jscript.dll执行失败了;

b、以“超级管理员”角色登录,使用命令提示行,执行脚本:regsvr32 %winDir%\SysWOW64\jscript.dll基本上也能执行成功,当然此后再在“运行”当中执行regsvr32 jscript.dll也是没有问题的。若是切换成普通角色,可能还是会有问题。

猜你喜欢

转载自1017401036.iteye.com/blog/2309097