已知paradox数据库的密码,如何删除密码 ( 积分: 100 )

  • 主题发起人 主题发起人 messah
  • 开始时间 开始时间
M

messah

Unregistered / Unconfirmed
GUEST, unregistred user!
使今后不用再输入密码来访问这个数据库。
 
没人知道?
 
.......
uses bde, StdCtrls, DB, DBTables;
........

function StrToOem(const AnsiStr: String) : String;
begin
SetLength(result, Length(AnsiStr));
if Length(result)>0 then
CharToOem(PChar(AnsiStr), PChar(result));
end;

procedure DbAddPassword(var table: ttable; password: String);
var
pTblDesc : pCRTblDesc;
hDb : hDBIDb;
begin
with Table do
begin
Close; Exclusive := true; Open; hDb := DBHandle; Close;
end;
GetMem(pTblDesc, sizeof(CRTblDesc));
FillChar(pTblDesc^, sizeof(CRTblDesc), 0);
with pTblDesc^ do
begin
StrPCopy(szTblName, StrToOem(table.tablename));
szTblType := szParadox;
StrPCopy(szPassword, StrToOem(password));
bPack := true;
bProtected := true;
end;
if DbiDoRestructure(hDb, 1, pTblDesc, nil, nil, nil, false)<>DBIERR_NONE then
exit;
if pTblDesc<>nil then
FreeMem(pTblDesc, sizeof(CRTblDesc));
end;

procedure TForm1.Button1Click(Sender: TObject);
var tt: TTable;
ss: Tsession;
begin
ss:=Tsession.Create(self);
tt:=TTable.Create(self);
try
ss.SessionName:='MySession'; ss.AddPassword('OldPassWord');
tt.SessionName:='MySession'; tt.TableName:='c:/test/client.db';
DbAddPassword(tt,''); //清除密码
showmessage('搞定,自己测试一下!');
finally
ss.Free;
tt.Free;
end;
end;
 
其实用batchmove复制结构后倒一次记录一样也能令密码丢失的。。。。:)
 
建议不要再使用 paradox 数据库啦,你会很麻烦的,效率低且数据不安全,我是深受其害才专用了微软的 access 或者 sql server 或者 oracle
 
后退
顶部