Hallo und Guten Tag
Habe eine Datenbank in der ich verhindern möchte das mit gedrückter Shift Taste der Benutzer in das Datenbankfenster gelangt. Das gelingt mir auch nur leider habe ich nun festgestellt das wenn der Benutzer die Datenbank per windows Funktion kopiert und in einem neuen Ordner einfügt diese Funktion außer Kraft ist.
Nun der von mir verwendete Code:
Private Sub Form_Load()
optSwitch = fctShift_Start(False, True)
txtStatus = IIf(optSwitch, "Die Shifttaste ist freigegeben", "Die Shifttaste ist blockiert")
End Sub
Private Function fctShift_Start(ByVal bFlag As Boolean, Optional ByVal bStatus As Boolean = True) As Boolean
On Error GoTo Err_fctShift_Start
Dim db As Database
Set db = CurrentDb
If Not bStatus Then
db.Properties!AllowBypassKey = bFlag
End If
fctShift_Start = db.Properties("AllowBypassKey")
Exit_fctShift_Start:
db.Close
Set db = Nothing
Exit Function
Err_fctShift_Start:
If Err = 3270 Then ' Eigenschaft nicht vorhanden
db.Properties.Append db.CreateProperty("AllowBypassKey", dbBoolean, True)
fctShift_Start = True
Resume Next
Else
MsgBox "Fehler Nr. " & (Err.Number) & " " & Err.Description
Resume Exit_fctShift_Start
End If
End Function
Private Sub optSwitch_AfterUpdate()
optSwitch = fctShift_Start(optSwitch, False)
txtStatus = IIf(optSwitch, "Die Shifttaste ist freigegeben", "Die Shifttaste ist blockiert")
End Sub
Wie kann ich das Verbessern oder Verhindern wo muss ich den Code verändern?? Kann mir jemand einen Tipp geben ? Danke für eure Mühe schon mal im Vorraus
Gruß Stefan
Hallo,
viel zu viel Code.
Bei www.donkarl.com?FAQ1.8 kannst du genau nachlesen.
Sub EnableShift(blnFlag As Boolean)
On Error GoTo Error_EnableShift
Dim db As DAO.Database
Dim prp As DAO.Property
Set db = CurrentDb
db.Properties!AllowBypassKey = blnFlag
Exit_EnableShift:
Set prp = Nothing
Exit Sub
Error_EnableShift:
If Err = 3270 Then
Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, blnFlag)
db.Properties.Append prp
Resume Next
Else
MsgBox "Fehler: " & Err.Description
Resume Exit_EnableShift
End If
End Sub
Obigen Code in Startformular-Modul Copieren und beim Laden EnableShift(False) aufrufen.
Andreas
Wichtig!!
Das darfst du natürlich nicht mit deiner Entwicklungsversion machen sondern erstell duch kopieren eine Anwendungsversion und benenn diese auch anderst.
Und in die Anwendungsversion fügst du den Code ein. Ein Schalter der die Shift-Taste wieder einschaltet ist unsicher, und einmal ausgesperrt heißt du kannst die DB wegschmeissen.
Also immer von jedem Entwicklungsstand Kopien machen.
Hallo Andreas
Sorry den Schalter oder irgend ein Zugang benötige ich leider da es sich bei der Datenbank um Desingmaster in einer Replikat Gruppe handelt.
Ich habe heute eine Unsichtbare Taste auf der Startseite der dann ein Passwort Feld Sichtbar macht, das richtige Paßwort eingegeben wird nun dieser Schalter/Umschalter sichtbar gemacht.
Wenn ich das so mache wie du beschrieben ist die Datenbank sicher aber ich komme auch nicht mehr rein oder hab ich das falsch Verstanden?
Gruß Stefan
HAllo,
Du mußt halt dafür sorgen, dass Du z. B. mittels weiterer versteckter Schaltfläche oder geeignetem Ereignis die Property auch wieder auf true setzen kannst.
Hallo Franz
Mit dem Umschalter ist das zu unsicher das sehe auch ein, aber wie würdest du es lösen? Ich muß doch erreichen das bei erneutem Starten der Datenbank der Zugang wieder offen ist oder?
Wie machst du als Profi es den bei deinen Anwendungen?
Stefan
Hallo,
versteh Dich nicht.
Die AllowBypassKey-Property ist nur einer von vielen Punkten, die beim Schützen einer DB zu berücksichtigen sind. Diese Eigenschaft steuert nur die Funktion der Shift-Taste als Access-Spezialtaste.
Ich selber stelle diese Eigenschaft in Abhängigkeit einer anderen (verschlüsselten) benutzerdefinierten Eigenschaft der DB ein, die wiederum von einem extra "Tool" (einer anderen separaten DB) vor der Distribution eingestellt wird.
Es ist ein Leichtes, mittels externem Progrämmchen die Eigenschaften (Properties) einer Db umzustellen...
Hallo Franz
Ich arbeite mit einem Desingmaster in einer Replikatgruppe alle änderungen fließen nach dem Synchronisieren mit einem Replikat dort ein. Baue ich dort die AllowBypassKey-Property Methode ein muss ich mir auch ein Zugang schaffen sie wieder im Desingmaster aus zuschalten um mit ihr weiter arbeiten zu können
Nach welcher deiner Ansicht sollte mann eine Access Anwendung noch gesichert werden,wenn man nicht möchte das jemand nur mit der Anwendung arbeiten aber sie nicht verändern kann oder sollte.
Sicher ist keine Access Anwendung das ist mir schon klar nur möchte ich mit Access Mitteln meine Anwendung so sichern das sie nicht gerade mit der einfachen Kopier Funktion in windos zu öffnen ist.
Aus meiner Sicht wäre:
1) Datenbank in MDE wandeln
2) Spezialtasten sperren (Shift-Tasten)
3)......
Gruß Stefan
Hallo,
naja, mehr oder weniger der üblichen Methoden verwenden, je nach "Grad" der gewünschten Sicherheit:
1) DB-Kennwort
2) DB verschlüsseln
3) MDE erstellen
4) Einstellung der DB-Properties---> Spezialtasten
5) Sicherheitssystem aktivieren
6) externes Sicherheits-System verwenden (Keyword-basierte DLL-Library)
Hallo,
leider klappt bei mir der Code von Hondo nicht. Wie genau muss ich den wo einschreiben?
Ich habe im gesperrten Bereich eine Taste mit beim Klicken = EnableShift True. Das reicht doch als Aktivierung oder? Aber die Taste nützt mir gar nichts, wenn ich die Shift Tste nicht deaktiviert bekomme. Für jede Hilfe bin ich dankbar :)
MfG
Johannes
Hallo,
Was klappt nicht?
ZitatWie genau muss ich den wo einschreiben
am Besten in ein Standard-Modul, dann kann die Funktion von jeder Stelle aus in Access aufgerufen werden.
Zitatwenn ich die Shift Tste nicht deaktiviert bekomme
Was hast Du denn gemacht, um die Shift-Taste zu deaktivieren?
Hallo
danke für die schnelle Antwort. Inzwischen klappt die Deaktivierung und Aktivierung. Aber die Optionen für die aktuelle Datenbank möchte ich auch sperren. Weil sonst kann ja jeder die Entwurfsänderungen für Tabellen in der Datenblattansicht aktivieren und darauf hin verändern.
Wie kann ich die sperren?
Danke schon einmal im Vorraus
MfG
Johannes
Hallo,
Was sind denn "die Optionen für die aktuelle Datenbank " ??
Meinst Du den Menüpunkt?
In einer MDB/MDE-Datei kann man keine Tabellenänderungen unterbinden.
Selbst wenn es möglich ist, das DatenbankFenster (Navibereich) auszublenden, bleibt immer noch die Möglichkeit der Änderung dieser Objekte über externe DAO, bzw. ADODB-Zugriffe offen, genauso wie die Änderung der internen Access-Optionen,zu denen ja auch AllowByPassKey gehört.
Ein kleines(!!) Hindernis wäre die Vergabe eines Datenbankkennwortes, mit dem vielleicht der erstmalige Versuch zur Manipulation der Tabellen vereitelt werden könnte.
Hallo,
ja genau die Menüleiste, den Menüpunkt meine ich. Schade, trotzdem danke
Schönes Wochenende
MfG
Johannes