Delphi 如果我只有BDE别名,如何获得跨数据库密码?

Delphi 如果我只有BDE别名,如何获得跨数据库密码?,delphi,delphi-7,interbase,bde,Delphi,Delphi 7,Interbase,Bde,我试图在运行时通过BDE连接到Interbase DB。我正试图在一个无格式的项目(但不是一个控制台应用程序)中实现这一点。别名是已知的。我从注册表中检索别名。例如:MyAlias //create alias params list AParams:= TStringList.Create; //create a session to get alias parameters ASession:= TSession.Create(nil); ASession.SessionN

我试图在运行时通过BDE连接到Interbase DB。我正试图在一个无格式的项目(但不是一个控制台应用程序)中实现这一点。别名是已知的。我从注册表中检索别名。例如: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获取所有连接信息并进行连接?我不想硬编码用户名和密码,以防客户端将来更改它们。

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

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

如果我是您的客户,我不希望您可以在需要时访问我的数据库,即使我更改了密码。因此,您甚至不应该在未经客户许可的情况下尝试访问客户的数据。正如RRUZ所说,有关用户名、密码等的信息存储在一个加密文件中。如果我是您的客户,我不希望您可以在需要时访问我的数据库,即使我更改了密码。因此,您甚至不应该在未经客户许可的情况下尝试访问客户的数据。正如RRUZ所说,有关用户名、密码等的信息存储在一个加密文件中。谢谢,我想了很多。我只是想确认一下。我将使用一个存储别名的加密文件;用户名;密码。如果客户端将来更改其凭据,则此加密文件也可以更改。-谢谢谢谢,我想了很多。我只是想确认一下。我将使用一个存储别名的加密文件;用户名;密码。如果客户端将来更改其凭据,则此加密文件也可以更改。-谢谢