VB编写的程序在Win7 SP1编译无法在XP系统上使用的问题或者报“类不支持自动化或不支持所需的接口”错

可能出现的错误提示有:
1、430 Class does not support Automation or does not support expected interface
  运行时错误"430": 类不支持自动化或不支持所需的接口
2、Error 13 - Type mismatch


问题产生原环境:

操作系统:Windows 7 - (32 and 64 bit)  打了 SP1 补丁包
开发环境:Visual Basic 6 SP6 (VB6 SP6)  并引用 Microsoft ActiveX Data Objects 2.x Library(ADODB, msado27.tlb, msado28.tlb and msado15.dll)


问题描述:

在WIN7SP1环境下编译后,本机运行正常,在其他电脑(一般为XP系统)无法运行,产生以上错误提示。如果在XP下编译,则没有任何问题,在WIN7SP1也运行正常。


问题原因:

问题很明确,是补丁包引起的,最终查明是KB983246补丁,关于此补丁微软有很详细的说明:
http://support.microsoft.com/kb/2517589/zh-cn  补丁包下载:KB983246.zip


解决办法:

1、所有客户端安装KB983246补丁!
2、卸载Win7 的 SP1补丁包
3、替换Win7的C:\Program Files\Common Files\System\ado下的对应ado组件为XP SP3下的对应文件。
比如:将原来的Win7的msado27.tlb改名为msado27-new.tlb
然后将XP的msado27.tlb复制到ado目录。重新打开VB编译程序即可。
注意:Win7的ado文件夹要先设置权限哦!

  ado报错类不支持自动化