BDEエイリアスのみがある場合、インターベースパスワードを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4869944

質問

私は、BDEを介して実行時にベース間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;

とにかく、セッションのようには見えません。getParamsは実際にパスワードを取得します。パスワードを取得するにはどうすればよいですか?エイリアスを知っている場合、BDEからすべての接続情報を取得し、接続を作成する方法はありますか?将来クライアントがそれらを変更した場合に備えて、ユーザー名とパスワードをハードコードしたくありません。

役に立ちましたか?

解決

シェーン、データベースからパスワードを取得できれば、エイリアスを知っているだけで、データベースのすべてのセキュリティは無意味になります。 答えはノーです 、BDEのエイリアスを知っているだけであるこの情報を取得することはできません。パスワード保護でデータベースに接続する方法は、ユーザーとパスワードを最終ユーザーにリクエストするか、この情報を暗号化された構成ファイルに保存することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top