一旦成功打开数据库就把access的mdb文件的前几个字符:
Standard Jet DB
修改。

解决方案 »

  1.   

    function GetAccessPassword(FilePath:string):string;
    const
        xorString:array[0..12]of byte=
          ( $86, $FB, $EC, $37,
            $5D, $44, $9C, $FA,
            $C6, $5E, $28, $E6,$13 );
    var
        passBuf:array[0..14]of byte;
        pass:array[0..14]of char;
        resultPass:string;
        B:Byte;
        F:TFileStream;
        i:integer;
    begin
      F:=TFileStream.Create(FilePath,fmShareDenyNone);
      //office 97
      try
        F.Seek($42,soFromBeginning);
        F.Read(passBuf,14);
        for I:=0 to 13 do
        begin
            B := passBuf[i] xor xorString[i];
            pass[i]:=char(B);
        end;
        pass[sizeof(pass) - 1] := #0;
        resultPass:=StrPas(Pass);
      finally
        F.Free;
      end;
      result:=resultPass;
    end;
    end;