Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Stapi am September 18, 2010, 16:40:36

Titel: Shift Taste
Beitrag von: Stapi am September 18, 2010, 16:40:36
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

Titel: Re: Shift Taste
Beitrag von: Hondo am September 18, 2010, 17:32:48
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.
Titel: Re: Shift Taste
Beitrag von: Stapi am September 18, 2010, 17:54:14
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
Titel: Re: Shift Taste
Beitrag von: DF6GL am September 18, 2010, 17:59:16
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.
Titel: Re: Shift Taste
Beitrag von: Stapi am September 18, 2010, 18:20:56
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
Titel: Re: Shift Taste
Beitrag von: DF6GL am September 18, 2010, 18:38:26
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...

Titel: Re: Shift Taste
Beitrag von: Stapi am September 18, 2010, 20:04:37
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

Titel: Re: Shift Taste
Beitrag von: DF6GL am September 19, 2010, 10:12:08
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)



Titel: Re: Shift Taste
Beitrag von: jojo92 am Juli 12, 2013, 09:41:57
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
Titel: Re: Shift Taste
Beitrag von: DF6GL am Juli 12, 2013, 09:56:00
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?
Titel: Re: Shift Taste
Beitrag von: jojo92 am Juli 12, 2013, 11:59:10
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
Titel: Re: Shift Taste
Beitrag von: DF6GL am Juli 12, 2013, 13:19:45
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.

Titel: Re: Shift Taste
Beitrag von: jojo92 am Juli 12, 2013, 13:33:21
Hallo,

ja genau die Menüleiste, den Menüpunkt meine ich. Schade, trotzdem danke

Schönes Wochenende
MfG
Johannes