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往往是一句話憋死程序員,不知道的還真就死在那兒了,以此備忘。轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章