ADO连接用户级加密的ACCESS数据库

 最近做个项目需要连接到一个第3方软件用到的MDB数据库,该MDB文件是用户级加密,虽然合作方给了用户名,说没有密码,但是却无法用ADO进行查询,报没有权限。用ACCESS打开也是一样,无法看到表里的数据。于是到网上去搜,结果只搜到如何用ACCESS对MDB进行加密和打开加密文件,这个跟编程无关,就没细看。关于ADO连接加密MDB,却只有如何连接设置了密码的MDB,都是以默认的管理员登录,没有如何更改用户登录的说明,而用户级加密的MDB一般都是不给管理员任何权限的。这下只好自己摸索了,问题肯定是出在连接字符串上,于是尝试进行修改。一般的连接MDB字符串是如下格式:

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dest.mdb;Persist Security Info=True

 

连接设置了密码的MDB,是加上Jet OLEDB:Database Password=password,但是用户级加密的MDB却没有设置密码,只是换了个用户,同时不给管理员任何权限,需要换用户登录,于是加上User ID=username;,却报错:无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。改了多次不行,只好再仔细看网上文章,知道必须要有相应的mdw文件才行,问合作方要到了mdw文件,按网上的方法用ACCESS打开了数据库,但是怎么把mdw加入连接字符串,却一点线索没有。百无聊赖在程序里打开系统的数据链接属性,在属性页“所有”里看到了这么个属性:Jet OLEDB:System database,眼睛一亮,莫非就是这个?试了一下,果然连接成功并能查询了!连接字符串如下:

 

Provider=Microsoft.Jet.OLEDB.4.0;User ID=username;Data Source=dest.mdb;Persist Security Info=True;Jet OLEDB:System database=xxx.mdw

 

再仔细研究了一下,发现如果不问合作方要这个mdw,也是有办法的,有工具可以看到mdb文件的密码和用户信息,在ACCESS里按看到的用户名和ID新建一个用户,然后把自己的mdw文件COPY出来加到连接字符串,同样可以连接并查询,MDB的安全性毕竟还是比较脆弱啊。

 

俗话说一文钱憋死英雄汉,在IT往往是一句话憋死程序员,不知道的还真就死在那儿了,以此备忘。转载请注明出处。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值