Wie kann ich ein Paradox-Datenbank mit einem Paßwort schützen?


Diese Routine (von Peter Haas) ändert das Masterpaßwort bzw. legt es an oder löscht es. AFlag bestimmt, ob es ein Paßwort geben soll oder nicht. Table muß dabei exclusiv geöffnet sein.

procedure ChangeMasterPassword(Tbl: TTable; const APassword:String; AFlag:Boolean);
var hDb: hDbiDb;
    TblDesc: CRTblDesc;
    szDir : array[0..dbiMaxNameLen] of Char;
begin
  Check(DbiGetDirectory(Tbl.DBHandle, False, szDir));
  try
    FillChar(TblDesc, sizeof(CRTblDesc), #0);
    Tbl.DisableControls;
    Tbl.Close;
    Check(DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb));
    Check(DbiSetDirectory(hDb,szDir));
    TblDesc.bProtected := AFlag;
    if AFlag then StrPCopy(TblDesc.szPassword,APassword);
    StrPCopy(TblDesc.szTblName, Tbl.TableName);
    StrCopy(TblDesc.szTblType, szParadox);
    Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
  finally
    Check(DbiCloseDatabase(hDb));
    Tbl.EnableControls;
    Tbl.Open;
  end;
end;

Noch ein Hinweis dazu: Passwörter bieten keinen sicheren Schutz, es gibt dafür Crackprogramme im Internet.

Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:

Wie kann ich die Paßwort-Abfrage beim Öffnen einer Datenbank unterdrücken?


Delphi FAQ