Access toetsen SHIFT en F11 uitschakelen

Access toetsen SHIFT en F11 uitschakelenDe Access toetsen SHIFT en F11 uitschakelen kan door een nieuwe eigenschap in de database toe te voegen met behulp van VBA.

Deze toetsen kunnen worden gebruikt om de beveiliging van een Access database te omzeilen. Het is namelijk zo dat wanneer een beveiligde database wordt gestart met de SHIFT (AllowBypassKey) ingedrukt de beveiliging omzeild wordt. Een andere methode om de beveiliging te omzeilen is om na het starten van de database op F11 (AllowSpecialKeys) te drukken.

Een Access database beveiligen is handig om bijvoorbeeld de objecten – zoals tabellen – te verbergen. Deze beveiliging kan worden toegepast door te navigeren naar: bestand, opties en huidige database. In het daarop volgende venster kan worden aangegeven welk formulier moet worden gebruikt bij het opstarten en dat het navigatie deelvenster (objecten) niet moet worden weergegeven.

De toepassing bestaat een formulier (Form_frmStart) met een toggle button (tglBeveiliging) om de beveiliging in- en uit te schakelen.

'-----------------------------------------------------------------------------------------------------------------------
' Auteur        : pascalterheege.nl
' Datum         : 21-6-2017
' Object        : Form_frmStart
' Doel          : afhandelen toggle button en instellingen (true, false) opslaan
'-----------------------------------------------------------------------------------------------------------------------

Option Compare Database

Private Sub Form_Load()

'   Opgeslagen instellingen uitlezen bij starten

    Dim blnWaarde As Boolean

    blnWaarde = getProperty("AllowBypassKey")

    If blnWaarde = False Then
        tglBeveiliging.Caption = "Toetsen SHIFT en F11 inschakelen"
    Else
        tglBeveiliging.Caption = "Toetsen SHIFT en F11 uitschakelen"
    End If

End Sub

Private Sub tglBeveiliging_Click()

'   Afhandelen toggle button

    If tglBeveiliging.Caption = "Toetsen SHIFT en F11 inschakelen" Then
'       inschakelen
        ChangeProperty "AllowBypassKey", 1, True
        ChangeProperty "AllowSpecialKeys", 1, True
        tglBeveiliging.Caption = "Toetsen SHIFT en F11 uitschakelen"
    Else
'       uitschakelen
        ChangeProperty "AllowBypassKey", 1, False
        ChangeProperty "AllowSpecialKeys", 1, False
        tglBeveiliging.Caption = "Toetsen SHIFT en F11 inschakelen"
    End If
    
    If MsgBox("De wijzigigen gaan van kracht wanneer deze database opnieuw wordt gestart!" $ vbNewLine & vbNewLine & _
    "Wilt u Access nu sluiten?", vbInformation + vbYesNo) = vbYes Then Application.Quit
    
End Sub

Voorts wordt er gebruik gemaakt van een standaard functie ChangeProperty met een eigen gedefinieerde functie getProperty.

'-----------------------------------------------------------------------------------------------------------------------
' Auteur        : pascalterheege.nl
' Datum         : 19-6-2017
' Object        : modBeveiliging
' Doel          : access toetsen SHIFT (AllowBypassKey) en F11 (AllowSpecialKeys) uitschakelen en inschakelen
' Bron          : https://support.office.com/nl-nl/article/AllowBypassKey-loper-toestaan-eigenschap-30ab5c36-51df-41a0-a955-b0f1deac517b
'-----------------------------------------------------------------------------------------------------------------------
Option Explicit

Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer

'   Functie komt rechtstreeks van bovenstaande Microsoft bron

    Dim dbs As Object, prp As Variant
    Const conPropNotFoundError = 3270

    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    ChangeProperty = True

Change_Bye:
    Exit Function

Change_Err:
    If Err = conPropNotFoundError Then
        Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
        dbs.Properties.Append prp
        Resume Next
    Else
        ChangeProperty = False
        Resume Change_Bye
    End If
End Function
Function getProperty(strPropName As String)

'   Eigen gedefinieerde functie t.b.v. uitlezen eigenschap

    Dim dbs As Object
    
    Set dbs = CurrentDb
    
    getProperty = dbs.Properties(strPropName)

End Function

Download hier de toepassing.