打开老 OA,登录按钮点下去,弹窗写着「ActiveX 部件不能创建对象」,后面还跟着个 429。换 64 位系统后更容易碰到,重装浏览器通常没用。这个错误是页面在调用本机的 COM 组件,组件没准备好,浏览器再新也白搭。

429 先看组件注册没有

这个报错的意思是页面要调用的 COM 组件没注册,或者注册表里登记的路径对不上。用管理员身份打开命令提示符,执行 regsvr32 组件路径,成功会弹「已成功注册」。组件放在中文目录里容易出问题,路径尽量用英文。注册失败时记下错误码,0x80070005 一般是权限不够。

不确定是哪个组件,就看页面源码里的 object 标签,或者直接问软件厂商。别从网上随便下 DLL 来注册,来源不明的组件风险很大。注册前先备份注册表,或者建个还原点,出问题还能退回来。

32 位和 64 位别搞混

64 位 Windows 自带两个 regsvr32:System32 下是 64 位,SysWOW64 下是 32 位。老系统的控件多数是 32 位,要用 C:/Windows/SysWOW64/regsvr32.exe 注册,用错了照样报 ActiveX 部件不能创建对象。判断位数可以看 DLL 的属性,或者用 dumpbin 查文件头。

浏览器这边也要对上。IE 有 32 位和 64 位版本,ActiveX 只在 32 位 IE 里正常跑的情况很常见,Edge 则要开 IE 模式。开始菜单里那个「Internet Explorer」快捷方式别只看名字,右键看属性里的路径,带 x86 字样的通常是 32 位。

安全设置也会拦

Internet 选项 → 安全 → 受信任的站点,把系统地址加进去。再到「自定义级别」里检查「ActiveX 控件和插件」相关项,别一股脑全启用,按厂商说明只放开需要的。站点地址如果带端口,要连端口一起加,http 和 https 也要分别加。

如果只有某台电脑报错,对比一下它的 IE 版本、位数和补丁,比反复重装系统有效。老系统能维持就维持,长期还是催厂商升级,ActiveX 这套东西在新浏览器里迟早走不通。真要长期用,做一台专门跑老系统的虚拟机,比到处改员工电脑省心。