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往往是一句话憋死程序员,不知道的还真就死在那儿了,以此备忘。转载请注明出处。
相关文档:
set adoCN =createobject("ADODB.CONNECTION")
set strCnn =createobject("ADODB.Recordset")
set rstSchema =createobject("ADODB.Recordset")
Dim I
dim n
str1 ......
创建基于对话框的应用程序ADO,向对话框中添加一个列表视图控件,并为其添加变量m_Grid
第一步:ADO对象的导入
在StdAfx.h头文件中:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, bu
// are ......
Access SQL注入参考
版本 0.2.1
(最近更新 10/10/2007)
原作者不详
描述 SQL查询及注释
注释符 Access中没有专门的注释符号.因此"/*", "--"和"#"都没法使用.但是可以使用空字符"NULL"(%00)代替:
' UNION SELECT 1,1,1 from validTableName%00
语法错误信息 "[Microsoft][Driver ODBC Micros ......
using System;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace ImageDB
{
public partial class FormImageAccess : Form
{
#region 自定义对象 ......
<!--#include file="config.asp" -->
<!--#include file="Fun.asp" -->
<%
'数据库管理类
class Datas
'备份
public sub Bk()
Set fso=server.createobject("scripting.filesystemobject")
fso.CopyFile Server.MapPath(SiteDataPath),Server.MapPath(SiteDataBakPath)
......