单位一台老财务软件,点打印预览就弹窗,说部件 comdlg32.ocx 或其依赖项未正确注册,整台机器干不了活。这个文件不新,但被它卡住的人一直不少。
它到底是谁家的控件
comdlg32.ocx 是微软随 VB6 等开发工具分发的 ActiveX 控件,封装的是那几个标准对话框:打开、另存为、打印、选字体、选颜色。用 VB6、早期 Delphi 或基于这些运行库写的国产软件,都可能调它。它和系统自带的 comdlg32.dll 不是一回事,dll 由系统管,ocx 属于可再分发的控件,得跟着软件走。
正常应该放在哪个目录
- 32 位系统:放在系统目录 System32 下。
- 64 位系统跑 32 位程序:要放在 SysWOW64 目录,因为老程序是 32 位的,认不到 System32 里的 64 位部件。
只把文件拷进去还不够,它必须在注册表里登记,程序才能找到,这就是为什么复制过去仍旧报错。
补齐的两步
regsvr32 comdlg32.ocx文件放对目录后,用管理员身份开命令提示符执行上面这条,成功会弹出一个小提示框。64 位系统要注册 32 位控件,得用 SysWOW64 目录下那个 regsvr32,直接敲系统自带的可能提示不兼容。嫌麻烦就重装该软件自带的运行库,通常会一并装好并自动注册。
注册失败的几种报错
报 0x8002801c 一般是权限不够,换管理员身份再跑。提示找不到文件,检查文件名和目录有没有放对,扩展名前别多出隐藏后缀。报加载失败,可能是文件版本不对或被杀软清过,从软件安装包里重新取一份,别在下载站随便找个同名文件凑数。
- 判断提醒:动手前先备份原文件;只有这一台机器报错时,优先从官方安装包补文件,别点所谓一键修复工具,那类工具常顺手改掉一堆无关设置。