none
Datenbank verschlüsseln per VBA

    Frage

  • Hallo,

    gibt es eine Möglichkeit, eine Access(2007)-Datenbank per VBA zu verschlüsseln?

    Hintergrund: Ich möchte dem user die Möglichkeit per Button zur Verfügung stellen, da die Navigationselemente sowie das Menü ausgeblendet sind.

    mit runcommand.acCmdEncryptDecryptDatabase funktioniert es nicht, da kommt eine Fehlermeldung:

    "Der Befehl oder die Aktion 'VerschlüsselnEntschlüsselnDatenbank' ist zurzeit nicht verfügbar."

    Vielen Dank schon mal :)

    Donnerstag, 5. April 2012 11:15

Antworten

Alle Antworten

  • Hallo Capricornus

    Capricornus wrote:

    mit runcommand.acCmdEncryptDecryptDatabase funktioniert es nicht, da
    kommt eine Fehlermeldung:

    "Der Befehl oder die Aktion 'VerschlüsselnEntschlüsselnDatenbank' ist
    zurzeit nicht verfügbar."

    Hast Du die Datenbank auch exklusiv geöffnet? Falls nicht, steht der Befehl nicht zur Verfügung.

    Wenn Du die Anwendung gemäss "Betrieb von Access Anwendungen" im Download Bereich des www.dbdev.org in FE/BE aufgeteilt hast, kannst Du den Start der FE auch so vornehmen, dass die lokale Kopie exklusiv geöffnet wird.

    Wenn Du allerdings die BE, welche die Daten beinhaltet, verschlüssen willst, dann wird es problematischer, weil diese ja eben nicht exklusiv geöffnet werden soll/darf, damit der Mehrbenutzer Betrieb überhaupt möglich ist.
    Wenn es eine Standalone Version ist, die nicht in FE/BE aufgeteilt und nur im Einmann Betrieb eingesetzt wird, dann kannst Du auch hier exklusiv öffnen. Dennoch ist auch in diesem Fall eine Aufteilung in FE/BE sinnvoll, weil Du später ja evt. mal neue Versionen der Anwendung verteilen willst und die Daten da nicht jedes Mal neu erfasst werden, sondern weiterbenutzt werden sollen.

    Gruss
    Henry

    Freitag, 6. April 2012 03:14
  • Hallo Henry,

    die Datenbank ist nicht in FE/BE aufgeteilt. Das ist auch nicht sinnvoll, da jeder User seine eigene Datenbank hat (gemeinsame Daten liegen auf einem SQL Server).Kann man das "exklusiv öffnen" standardmäßig aktivieren und hat das dann Einfluss auf die Verbindung mit dem SQL Server (speziell wenn mehrere ihre lokale Kopie der Access-Datei gleichzeitig geöffnet haben)?

    Die Datenbank wird auch von technisch Unbedarften benutzt, daher möchte ich es den Leuten möglichst einfach machen. Wenn ich denen erklären muss was "exklusiv öffnen" etc. bedeutet und wie man das macht hab ich schon verloren...

    Danke & Gruß

    Capricornus

    Freitag, 6. April 2012 09:26
  • Hallo Capricomus,

    ...und wenn Du es mit DBEngine.CompactDatabase probierst...? Allerdings fordert das etwas aufwendigeren Code, da die alte Datenbank (über kill) gelöscht und eine neue (komprimierte) Datenbank erzeugt wird, die über die dbEncrypt-Konstante verschlüsselt werden kann.

    Gruß Stefan

    Freitag, 6. April 2012 18:10
  • Das exklusive Öffnen betrifft nur die Access Anwendung, die mit Access geöffnet wird, nicht das, was hinten dran hängt.

    Ich frage mich allerdings: Was ist der Grund, dass Du diese nicht immer verschlüsselt lässt, wenn das Bedrüfnig nach Verschlüsselung besteht.

    Gruss

    Henry

    Samstag, 7. April 2012 01:57
  • CompactDatabase hatte ich auch schon probiert, das hat irgendwie nicht funktioniert (habs nimmer im Kopf und bin jetzt  grad net in der Arbeit).

    @Henry: Das hat zwei Gründe:

    1. das Access-Tool verwenden viele Benutzer; wenn ich es verschlüsselt ausliefere, hat jeder dasselbe Passwort.

    2. Manche brauchens nicht verschlüsselt, weil z.B. deren Notebook bereits komplett verschlüsselt ist.

    EDIT:

    Jetzt weiß ichs wieder mit CompactDatabase: Da bekomme ich die Meldung "Ungültiges Argument".

    Mein Code: DBEngine.CompactDatabase str_AlteDatei, str_NeueDatei, , dbEncrypt

    • Bearbeitet Capricornus Dienstag, 10. April 2012 08:48
    Samstag, 7. April 2012 09:30
  • So, habs jetzt selbst gefunden:

    Wenn ich das dbEncrypt weglasse funtkoiniert es:

    DBEngine.CompactDatabase str_AlteDatei, str_NeueDatei, , , ";pwd=Passwort"

    Dienstag, 10. April 2012 10:37
  • Damit dürfte die DB zwar Passwort geschützt sein, aber nicht verschlüsselt. Wenn das ausreicht, dann ist das wohl die Lösung.

    Hinzu kommt, dass dazu ja eigentlich die str_AlteDatei geschlossen sein müsste. Da Du aber die MDB von sich aus selber verschlüsseln willst, wäre das die str_AlteDatei und damit dürfte das eigentlich gar nicht laufen. Merkwürdig, aber hauptsache es tut...

    Gruss

    Henry

    Mittwoch, 11. April 2012 04:01