Windows 7 SP1 导致含有 ADO 的程式失效問題

该博客旨在分享 IT 技术心得和实际工作中遇到问题的解决方法,以下是新浪博客地址 http://blog.sina.com.cn/qianyumolu ,则为分享经济、行业趋势、心灵文章等,有兴趣的朋友可以踩踩,讨论分享  我爱你小燕

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

緣起

在编写AdminConsole告警接收处理展现模块中,出现在XP中编译可以使用ADO成功,但在WIN7 中编译就总是出现创建连接数据库的对象失败。百思不得其解,怀疑是dll的版本过高导致,结果误打误撞从dll的版本出发,找到问题所在。

 

问题所在:  

Windows 7 SP1修改了ADODB的IID码(这个原因还真坑人,防不胜防)

正因为_ConnectionPtr的GUID值发生变化了,本来是[{00000550-0000-0010-8000

-00AA006D2EA4],將之改为【{00001550-0000-0010-8000-00AA006D2EA4}】,而這將影响着在Windows7 SP1 以前的系統,在Windows 7 SP1所编译出來的程式時,將因為找不到該程式內含的ADODB而造成无法正常運作。

 

微软官方解释:http://support.microsoft.com/kb/2640696

 

0x80004003无效指针错误。 因为_ConnectionPtr的GUID值发生变化了,需要更新系统补丁。

 

微软官方解释:http://support.microsoft.com/kb/2640696

 

解决方法:

下载补丁号:KB2640696

如果c:\Program Files\Common Files\System\ado\msado60.tlb存在就不需下载

 

下载安装后,需要更改头文件中的包含文件为:

 

//win7  SP1 以下版本用这个dll文件

//#import "C:\ProgramFiles\Common Files\System\ado\msado15.dll" no_namespacerename("EOF", "ADOEOF")rename("BOF","ADOBOF")

//win7  SP1 版本用这个dll文件

#import "c:\Program Files\CommonFiles\System\ado\msado60.tlb" no_namespace rename("EOF", "ADOEOF")  rename("BOF","ADOBOF")

 

重新编译,发布问题解决。

 

感慨:

现在的工作内容太杂乱了,一下linux下的,一下子window编程,一下子后台程序,一下子界面程序。杂乱都算了,主要是这些工作内容的不是主流的技术和无法开发出主流的产品。

只能在空闲时刻自学了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值