¿Cómo puedo obtener una contraseña de Interbase si solo tengo el alias BDE?
Pregunta
Estoy tratando de conectarme a un DB Interbase en tiempo de ejecución a través del BDE. Estoy tratando de hacer esto en un proyecto sin forma (pero no en una aplicación de consola). El alias es conocido. Recupero el alias del registro. Ejemplo: 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;
De todos modos, no se parece a la sesión. GetParams realmente obtiene la contraseña. ¿Cómo obtengo la contraseña? ¿Hay alguna forma de obtener toda la información de conexión del BDE y hacer la conexión si conozco el alias? Prefiero no codificar el nombre de usuario y la contraseña en caso de que el cliente los cambie en el futuro.
Solución
Shane, si pudiera obtener la contraseña de la base de datos solo conociendo el alias, toda la seguridad de la base de datos no tendrá sentido. Por tanto, la respuesta es no , no puede recuperar esta información solo conociendo el alias BDE. La forma de conectarse a una base de datos con una protección de contraseña es solicitar el usuario y la contraseña al usuario final o almacenar esta información en un archivo de configuración cifrado.