Announcement

Collapse
No announcement yet.

Passwort per Code in den ADOConnectionstring eingeben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Passwort per Code in den ADOConnectionstring eingeben?

    Guten Morgen liebe Entwickler,

    ich habe folgendes Problem mit D6 und Access2000:

    Meine Datenbank ist mit einem Passwort geschützt. Der Anwender muß sich beim ersten Programmstart mit den ADOConnectionstring-Dialogen den DB-Pfad selbst zusammensetzen. Dabei wird der Pfad mit einer Funktion in die Registry geschrieben. Ich muß deshalb dem Anwender das Passwort mitteilen, sonst bekommt er die Verbindung nicht zustande. Dann ist aber der Weg in die Datenbank für jeden frei der das Passwort kennt.

    Mit dem folgenden Code schreibe ich den kompletten String in die Registry.

    Meine Frage: An welcher Stelle in diesen Code kann ich den Wert für das Passwort setzen?

    function TStart.WriteDSNToRegistry(DSN1 : string) : Boolean;
    var Registry : TRegistry;
    begin
    WriteDSNToRegistry := true;
    Registry := TRegistry.Create;
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    if Registry.KeyExists('\Software\Meine Firma\DB.mdb') = false then
    try
    Registry.CreateKey('\Software\Meine Firma\DB.mdb');
    except
    Registry.Free;
    WriteDSNToRegistry := false;
    Exit;
    end;
    try
    if Registry.OpenKey('\Software\Meine Firma\DB.mdb', true) = true then
    Registry.WriteString('DSN1', DSN1 )
    //Mein folgender Versuch funktionierte nicht
    //Registry.WriteString('DSN1'+'Jet usw. Passwort', DSN1 )
    else begin
    MessageDlg('Es konnte nicht in die Registry geschrieben '+
    'werden', mtError, [mbOK], 0);
    WriteDSNToRegistry := false;
    end;
    finally
    Registry.CloseKey;
    Registry.Free;
    end;
    end;

    Vielleicht kann mir jemand von Euch helfen. Ich habe es schon in einem anderen Forum versucht aber keine Antwort erhalten.
    Ist der Ansatz evtl völlig falsch?

  • #2
    Hallo,

    die Weitergabe des Passwortes ist nicht notwendig, man kann im Code auch das Kennwort setzen. Im folgenden Beispiel kann z.B. der Pfad zur Datenbank aus der Registry ausgelesen werden

    const
    PW = 'Mein Kennwort';

    with ADOConnection1 do
    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + PfadZurDatenbank + ';Persist Security Info=False;Jet OLEDBatabase Password=' + PW

    Comment


    • #3
      Ich habe es wohl mit der falschen Funktion versucht. Jetzt klappt es. Ich bin zur selben Lösung gekommen. Dank

      Comment

      Working...
      X