如果我只有BDE别名,如何获得Interbase密码?

时间:2011-02-02 01:35:21

标签: delphi delphi-7 interbase bde

我正在尝试通过BDE在运行时连接到Interbase数据库。我试图在一个无形的项目(但不是一个控制台应用程序)中这样做。别名是已知的。我从注册表中检索别名。示例:MyAlias。

//create alias params list  
AParams:= TStringList.Create;  

//create a session to get alias parameters  
ASession:= TSession.Create(nil);  
ASession.SessionName := 'MainSession';  
try  
 ASession.GetAliasParams(tmpAlias, AParams);  
finally  
 ASession.Free;  
end;  


//connect to database 
dbMain:= TDatabase.Create(nil);  
with dbMain do  
begin  
 //AliasName:= 'MyAlias';  
 DatabaseName:= 'test';  
 LoginPrompt:= False;  
 Params.Assign(AParams);  
 try  
  Connected:=True;  
  if Connected then ShowMessage('Connected!') else ShowMessage('Failed to Connect!');    
 finally  
  Free;  
 end; //try  
end;//with  

//free alias params list  
AParams.Free;

无论如何,它看起来不像Session.GetParams实际上获取密码。我如何获得密码?如果我知道别名,有没有办法从BDE获取所有连接信息并建立连接?如果客户端将来更改用户名和密码,我宁愿不对其进行硬编码。

1 个答案:

答案 0 :(得分:6)

Shane,如果你只知道别名就能从数据库中获取密码,那么数据库的所有安全性都是毫无意义的。 所以答案是否,只有知道BDE别名才能检索此信息。使用密码保护连接数据库的方法是向最终用户请求用户和密码,或将此信息存储在加密配置文件中。